关于条件变量的使用,有一种需要注意的情况。
条件变量的原理是:
wait函数将当前线程挂起,加入到等待队列中。
wake函数将某个或者所有被wait函数挂起的线程复活。
所以,wake执行时一定要保证所有该wait的都已经wait了!!!!!!也就是说被挂在等待队列中了。
这篇帖子里有图:
http://www.cppblog.com/Solstice/archive/2013/09/09/203094.html
关于条件变量的使用,有一种需要注意的情况。
条件变量的原理是:
wait函数将当前线程挂起,加入到等待队列中。
wake函数将某个或者所有被wait函数挂起的线程复活。
所以,wake执行时一定要保证所有该wait的都已经wait了!!!!!!也就是说被挂在等待队列中了。
这篇帖子里有图:
http://www.cppblog.com/Solstice/archive/2013/09/09/203094.html