阅读:1458回复:1
遇到一个棘手的问题,多线程等待一事件
现在有多个线程均在循环等待一事件,如何编程保证:
1.每个线程都能等到这一事件。 2.每个线程都不会重复响应同一事件。 Note:各线程并不知道其他线程的存在,也不知道置事件Signal的发起者。 举例如下: 有A,B两个线程循环等待事件Event,有个进程C(发起者)它负责将事件Event置为Signal 我的最初实现是这样: Thread A while(1) { wait(event); ...... } Thread B while(1) { wait(event); ...... } 当初的考虑是创建事件时,设置为手动reset,就是C置signal后,C等待一段时间,然后Reset,这样可以保证两个线程的都能响应到事件,但是,会发生同一事件两次响应的情况。而如果在某一线程内reset会导致其他线程响应不到,而设置为自动reset也会导致一部分线程无法响应(没测试过,猜想) 或者这个模型压根不能用事件实现,其他的信号灯,互斥量等等,大侠请帮忙,内核区也发过这个帖子了。 |
|
沙发#
发布于:2005-02-20 18:37
帮你顶一下
|
|