如何确保每个线程平均共享的互斥锁

时间:2012-03-20 10:28:52

标签: mutex

我试图找出如何确保每个线程(Linux中的POSIX线程)平均应该输入互斥锁。

在我的程序中,有一个全局队列,它有自己的互斥锁。一些写入线程一次将元素写入队列一,并且每个读取线程从队列中读出一组元素。结果是队列的大小总是比限制大。

所以我的问题是如何确保平均每个线程都应该访问互斥锁。任何意见将不胜感激!

1 个答案:

答案 0 :(得分:0)

我假设有两个编写器线程,一个读取器线程和一个缓冲区限制的公共缓冲队列。

有很多方法可以做到这一点。

  1. 创建优先级高于reader线程的reader线程。因此,每当任何一个写入器线程释放锁定时,如果它在调度程序队列中与第二个写入器线程一起等待,它将被读取器线程立即获取。

  2. 使用全局同步标志在队列中执行任务,并为某些读取和写入条件提供阈值(例如,如果我的队列计数为10,那么如果达到最大计数,下次我将只能在标志的帮助下安排读者线程一定次数,然后释放标志才能正常工作)。这将有助于限制队列增长大于限制。

  3. 希望你理解这两点。