C++ 11 关于实现线程池的问题,它没有Suspend,Resume方法
以前在windows平台下用CreateThread来创建一个新的线程,通过对返回的HANDLE调用SuspendThread,ResumeThread来暂停(阻塞)或唤醒线程,Linux下的pthread也有类似的功能。
最近想把自己以前写的线程池改一下,发现C++11中的多线程是通过condition_variable 条件变量的方法wait, notify_one/notify_all来暂停和唤醒线程的。但具体是哪个线程被唤醒了,却是不被知道的。
我觉得这个还是有点坑吧,不知道大家怎么看。
我以前是先从suspend的线程列表中找到一个空闲的线程,给这个线程挂一个task,然后Resume它。现在C++11是得改为把task放到一个taskList里,等某个线程被Resume后,再去取一个task出来处理。以前是不需要taskList的,并且taskList是非线程安全的,我也还需要多加一个锁,问题当然是解决了,但心理感觉不爽。
不知道大家是怎么处理这个的。。。