发明名称 |
一种用于在多核平台下优化关键临界区的方法 |
摘要 |
本发明公开了一种用于在多核平台下优化关键临界区的方法,包括:工作线程在主程序入口创建全局锁信息管理列表,用于存储锁和其对应的任务队列之间的关联关系,工作线程接收并执行并行任务,根据并行任务对锁发出加锁请求,并判断加锁是否成功,如果成功则工作线程在内存中为新的任务队列分配空间,以获取该任务队列的起始地址,工作线程将锁与获取的任务队列的起始地址之间的关联关系存储在全局锁信息管理列表中,工作线程在全局锁信息管理列表中存储该新的任务队列初始化完毕的信息,工作线程进入临界区执行并行任务,并判断执行并行任务期间是否有新的并行子任务生成。本发明能够解决现有多核平台下临界区过大导致程序性能降低的技术问题。 |
申请公布号 |
CN103699363A |
申请公布日期 |
2014.04.02 |
申请号 |
CN201310681619.9 |
申请日期 |
2013.12.13 |
申请人 |
华中科技大学 |
发明人 |
廖小飞;金海;丁海淼;章勤;范学鹏 |
分类号 |
G06F9/38(2006.01)I;G06F9/48(2006.01)I |
主分类号 |
G06F9/38(2006.01)I |
代理机构 |
华中科技大学专利中心 42201 |
代理人 |
朱仁玲 |
主权项 |
一种用于在多核平台下优化关键临界区的方法,其特征在于,包括以下步骤:(1)工作线程在主程序入口创建全局锁信息管理列表,用于存储锁和其对应的任务队列之间的关联关系;(2)工作线程接收并执行并行任务,根据并行任务对锁发出加锁请求,并判断加锁是否成功,如果成功则转入步骤(3),如果失败则转入步骤(10);(3)工作线程在内存中为新的任务队列分配空间,以获取该任务队列的起始地址;(4)工作线程将锁与步骤(3)中获取的任务队列的起始地址之间的关联关系存储在全局锁信息管理列表中;(5)工作线程在全局锁信息管理列表中存储该新的任务队列初始化完毕的信息;(6)工作线程进入临界区执行并行任务,并判断执行并行任务期间是否有新的并行子任务生成,如果有则转入步骤(7),否则过程结束;(7)工作线程查询全局锁信息管理列表,并将新的并行子任务存储在锁关联的任务队列中;(8)工作线程判断是否所有的并行子任务均已生成完毕,如果是则转入步骤(9),否则返回步骤(6);(9)工作线程依次从锁关联的任务队列中获取并行子任务并执行该并行子任务,直至所有并行子任务都处理完毕为止,然后过程结束;(10)工作线程查询全局锁信息管理列表,以判断锁是否与获取的任务队列的起始地址之间存在关联关系,若存储有,则转入步骤(11),否则工作线程暂停工作0.5秒至1秒后,重复步骤(10);(11)工作线程查询锁关联的任务队列,并判断该任务队列是否不为 空,若不为空则转入步骤(12),否则过程结束;(12)工作线程依次从锁关联的任务队列中获取并行子任务并执行该并行子任务,直至所有并行子任务都处理完毕为止,然后过程结束。 |
地址 |
430074 湖北省武汉市洪山区珞喻路1037号 |