我有以下场景:我有一个应该填充的线程
具有整数对的容器(本质上是任务描述),我有一个大的
应该从此容器中获取元素并执行的工作线程数(8-16)
一些工作.
具有整数对的容器(本质上是任务描述),我有一个大的
应该从此容器中获取元素并执行的工作线程数(8-16)
一些工作.
我认为这个问题可以通过阻塞队列轻松解决 – 例如关于项目删除,线程同步对队列的访问,如果没有可用数据则休眠.
我(也许错误地)认为这样的东西应该存在于STL或者boost中,但我无法找到任何东西.
我真的必须自己实施那件事吗?这似乎是一种常见的情景……
解决方法
如果您自己实现它,那么实现应该是信号量,互斥体和队列对象的相当简单的组合.
这是一些伪代码:
Produce{ pthread_mutex_lock(&mutex); queue.push_back(someObjectReference); pthread_mutex_unlock(&mutex); sem_post(&availabilitySem); } Consume{ sem_wait(&availabilitySem); pthread_mutex_lock(&mutex); queue.pop_front(someObjectReference); pthread_mutext_unlock(&mutex); }