求助,关于线程调度的问题(临界区,优先级)(300分)

  • 主题发起人 budianermayi
  • 开始时间
B

budianermayi

Unregistered / Unconfirmed
GUEST, unregistred user!
我程序的目的: 我想将几个线程不停的访问一个临界区资源,A线程的优先级高,要求在
两次访问当中,必有一次执行A,另外的一次机会平均的让给其他的线程.注意,平均分配的
也很重要,不应该出现某个线程多次得不到资源.
那位朋友有能力解答我的问题,望赐教,不胜感谢.
我的想法是:把A设为较高优先级,而在A线程每次释放临界资源之后,sleep一下(这个时间
远小于循环使用临界资源的运行时间)这样让别的线程得到机会,而别的线程释放临界区之后
,由于A优先级高,将再次得到资源,可是实事不是我想的那样,结果是所有的线程得到了平均
的执行机会,似乎在线程调度时,会按照等待临界资源的时间先后,排队执行线程,而不考虑
线程的优先级,是这样吗? 我的想法可行吗?
欢迎大家参与讨论
 
你不如在A设个变量,访问完了就设为True,别的线程只能当A为TRUE时,才能访问,访问完又将它设为FALSE
这样做还简单
 
copy_paste:你好,你说的方法我也试过,能够保证每两次使用资源有一次是A线程,可是还有
个问题很难办,就是别的线程分配不均,线程调度时有时候一个线程连续使用资源,而有的线
程好多次得不到资源.
这个问题解决不了吗?还是只能自己编程调度线程?那样实在是太繁琐,而且,我经验不多
包不准会出问题.
 
你是需要在编程里实现,还是弹出打印对话框再设置自定义的尺寸大小。
 
这个比较准确的次数依赖操作系统,win9x 和 win2000/xp 的效果都会不同
如果要求精确最好自己计数,当一个线程发现自己执行次数过多就 sleep 一下。
 
顶部