2012-03-20 59 views
1

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

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

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

+0

您是否在谈论资源匮乏? http://en.wikipedia.org/wiki/Resource_starvation – Volte 2014-05-29 18:22:47

回答

0

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

有几种方法可以做到这一点。

  1. 创建具有更高优先级和写入程序线程的reader线程。因此,每当写入线程释放锁时,如果它在调度程序队列中一直等待 - 第二个写入线程,它将立即被读取线程获取。

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

希望你明白这两点。