【发布时间】:2015-06-20 03:09:49
【问题描述】:
我在 C 中创建了一个线程池。池中的每个线程执行完全相同的功能。几个生产者线程使用相当标准的 mutex/cond 方法将新数据放入该池的队列中。
新数据总是比较大,必须执行的处理量可能需要相当长的时间。每当我看到这样的实现时,工作人员会在复制所需数据或执行请求的任务时锁定队列。在我的情况下,这些操作中的任何一个都可能需要一段时间,在此期间其他线程将被阻止访问队列。
我应该如何宣布某个特定线程已完成一项任务但与该任务相关的数据仍在使用中?在队列中添加某种“正在处理”标志并让工作线程在队列工作时解锁队列是否可行?
【问题讨论】:
标签: c multithreading