一种多线程链表操作系统及方法与流程

文档序号:31546135发布日期:2022-09-17 01:13阅读:来源:国知局

技术特征:
1.一种链表操作系统,其特征在于,包括:定义数据结构模块,该模块通过定义数据结构io_data以及该种链表数据结构的list_new列表;多线程访问模块,该模块用于当多个线程需要将新的io_data数据挂载到链表上时,嵌入汇编语言通过对list_new链表中tail变量的原子性互斥操作,完成数据的多线程并发一致性访问;所述的原子性互斥操作包括:运用smp_lock及cmpxchg两条指令级操作,锁住对list_new链表的访问,从而享有独占权;该两条指令首先会取得对tail内存地址的访问权,取得访问权后锁住总线,即针对该内存地址的其他总线访问将被锁住,进而对该内存地址内的值进行修改,完毕后释放总线,其他访问需求再次通过竞争得到获取访问权。2.根据权利要求1所述的一种链表操作系统,其特征在于,所述的定义数据结构模块中,定义的数据结构io_data为:typedef struct io_data{struct io_data*next;int io其他变量}io_data。3.根据权利要求2所述的一种链表操作系统,其特征在于,所述的定义数据结构模块中,链表数据结构的list_new列表为:typedef struct list_new_s{struct io_date *head;struct io_date *tail;struct io_date dummy;}list new。4.根据权利要求3所述的一种链表操作系统,其特征在于,所述的原子性互斥操作采用原子操作函数,所述的原子操作函数为:boollist_cmpxchgp(io_date*poniter_i,io_data*old_i,io_date*new_i){io_data*volatile*result;_asm__volataile_(smp_lock“cmpxchgp %1 %2”:”=a”(result):”q”(new_i),”m”(pointer_i),”0”(old_i):”memory”);return result==old_i;}。
5.根据权利要求4所述的一种链表操作系统,其特征在于,原子操作函数原子性判断pointer指向的值是否与old_i相等,只有在相等的条件下,才将new_i的值赋值给pointer,并返回真,即修改pointer的值的操作顺利完成。6.一种链表操作系方法,其特征在于,包括以下步骤:步骤s1:定义数据结构的步骤,该步骤中定义数据结构io_data以及该种链表数据结构的list_new列表;步骤s2:多线程访问的步骤,该步骤中当多个线程需要将新的io_data数据挂载到链表上时,嵌入汇编语言通过对list_new链表中tail变量的原子性互斥操作,完成数据的多线程并发一致性访问;所述步骤s2中的原子性互斥操作包括:运用smp_lock及cmpxchg两条指令级操作,锁住对list_new链表的访问,从而享有独占权;该两条指令首先会取得对tail内存地址的访问权,取得访问权后锁住总线,即针对该内存地址的其他总线访问将被锁住,进而对该内存地址内的值进行修改,完毕后释放总线,其他访问需求再次通过竞争得到获取访问权。7.根据权利要求6所述的一种链表操作系方法,其特征在于,所述的步骤s1中,定义的数据结构io_data为:typedef struct io_data{struct io_data*next;int io其他变量}io_data。8.根据权利要求7所述的一种链表操作系方法,其特征在于,所述的步骤s1中,链表数据结构的list_new列表为:typedef struct list_new_s{struct io_date *head;struct io_date *tail;struct io_date dummy;}list new。9.根据权利要求8所述的一种链表操作系方法,其特征在于,所述步骤s2中的原子性互斥操作采用原子操作函数,所述的原子操作函数为:boollist_cmpxchgp(io_date*poniter_i,io_data*old_i,io_date*new_i){io_data*volatile*result;_asm__volataile_(smp_lock“cmpxchgp %1 %2”:”=a”(result):”q”(new_i),”m”(pointer_i),”0”(old_i)
:”memory”);return result==old_i;}。10.根据权利要求9所述的一种链表操作系方法,其特征在于,原子操作函数原子性判断pointer指向的值是否与old_i相等,只有在相等的条件下,才将new_i的值赋值给pointer,并返回真,即修改pointer的值的操作顺利完成。

技术总结
本发明属于数据管理技术领域,具体涉及一种多线程链表操作系统及方法,所述的系统包括定义数据结构模块,该模块通过定义数据结构io_data以及该种链表数据结构的list_new列表;多线程访问模块,该模块用于当多个线程需要将新的io_data数据挂载到链表上时,嵌入汇编语言通过对list_new链表中tail变量的原子性互斥操作,完成数据的多线程并发一致性访问,规避多线程并发问题,其次在取得独占权的同时完成新io_data new的入表操作,节省时间提高效率。提高效率。提高效率。


技术研发人员:吴庆凯 孙明刚
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2022.06.27
技术公布日:2022/9/16
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1