【发布时间】:2014-04-07 12:11:23
【问题描述】:
我们的目标是创建支持优先任务的线程池。 所以我需要写一些数据结构来支持线程安全的优先级队列。 当然,我们可以写大锁并使用std::priority_queue。但这不是那么有效。
有一个想法来实现带有并发提取的二进制堆(每个元素都有自己的自旋锁,并且有一个全局 shared_mutex ,当我们改变堆大小时它是写锁定的,当我们堆化节点时是读锁定的,当我们交换时并比较我们锁定它们的自旋锁的节点),但是有很多潜在的死锁能力,我仍然不知道如何避免它们。
有没有什么好的数据结构可以更容易地实现线程安全?或者是否有任何我可以调查的已经实现的堆?
【问题讨论】:
标签: multithreading thread-safety heap threadpool