我有以下场景:我有一个线程应该填充
带有整数对的容器(本质上是任务描述),我有一个很大的
应从此容器中获取元素并执行操作的工作线程数 (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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)