求一个算法
有8个线程,按线程号排列放入一个队列中,比如说是"47, 987, 8787, 45, 587, 88, 1245, 982"吧. 首先用临界区控制来执行线程号是47的线程,待处理完毕后,47排入队列的尾部,队列变成"987, 8787, 45, 587, 88, 1245, 982, 47",然后再处理线程号是987的线程,同样的方法,线程987处理完毕,也排入队列的尾部,线程队列变为"8787, 45, 587, 88, 1245, 982, 47, 987",然后再处理线程8787,同样的方法,以此循环.也就是说每次先处理队列首部的线程,处理完毕的线程号排到队列的尾部,然后再处理首部的线程,始终这样循环. 问题点数:30、回复次数:6Top
1 楼charles_y(每天上网一小时)回复于 2006-03-04 13:33:24 得分 16
说说我的想法:
每个线程开始的时候锁住临界区,出来的时候释放临界区
for(;;)
{
释放临界区;
执行选定的线程,其他的suspend;
进入临界区;
调整顺序;
}
至于怎么调整顺序,自己想想啦Top
2 楼yuanbocsut(井冈星火)回复于 2006-03-04 15:32:00 得分 2
UPTop
3 楼LouisZX()回复于 2006-03-04 15:43:14 得分 0
请具体帮忙写一个实现,谢谢了Top
4 楼ouyh12345(五岭散人)回复于 2006-03-06 08:53:34 得分 2
用循环链表调整顺序Top
5 楼bohlee(我心澎湃)回复于 2006-03-06 09:52:24 得分 4
别人可以说思路,实现最好自己Top
6 楼mosing(A Crimson Cosmos)回复于 2006-03-07 01:36:05 得分 6
可以使用8个Event,每个线程等待一个。开始时Set线程47等待的Event,线程 47 执行完后 Set 线程 987 等待的 Event,依次类推。Top




