微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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);
}

原文地址:https://www.jb51.cc/c/118723.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐