如何通知程序的多个线程结束?高分欢迎大家讨论。
一个多线程的程序,各个线程都是无限循环程序,工作函数类似如下:
thread()
{
for(;;){ do ...}
}
在外部条件触发的情况下,要退出,(比如Ctrl +C ,Kill信号等)。这就要通知各个工作的线程结束自己的循环?
通知的方法当然有很多种,
A.用全局变量。
B.使用事件Event。
C.封装通知变量或者事件。这种方法无非是前面两种方法的OO扩展。
在候Sir的Win32多线程编程的那本书种其推荐的是使用事件通知工作线程,当然这样有好处,比如变量可能被优化出问题,而且可能改变。
但我这样的一些想法:很多时候使用变量已经足够完成通知结束这个任务?
1.变量的优化问题可以通过voliate修饰符号解决。
2.结束的通知一般不会在被改变。Win32的事件有更复杂的用处,通知结束这个情况并不复杂。
3.UNIX下没有事件,ACE类库是自己模拟出的事件出来方式。通用性上其实有负担。
你的感觉呢?欢迎大家讨论。