在C中构建多线程工作队列(使用者/生产者)

前端之家收集整理的这篇文章主要介绍了在C中构建多线程工作队列(使用者/生产者)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下场景:我有一个应该填充的线程
具有整数对的容器(本质上是任务描述),我有一个大的
应该从此容器中获取元素并执行的工作线程数(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);
}

猜你在找的C&C++相关文章