2015-11-02 118 views
0

我正在C中编写代码,其中有多个写入高优先级队列或低优先级队列和单个工人(或消费者)从高优先级队列和低优先级队列读取的线程。需要关于多线程线程,单个工作线程模型的建议

我有一个使用pthread mutex的线程同步机制。

我在写这段代码的时候有一种怀疑,即我是否应该为高优先级队列和低优先级队列分别设置一个锁? 或我应该有一个高低优先级队列的公共锁。

+0

发布您的代码。有办法做到这一点,没有任何锁。 –

+0

现在它的方式太广泛了。发布具体信息,最好是代码,如果你能以简洁明白的形式得到它。 – MicroVirus

+0

请找到伪代码,因为我无法粘贴确切的代码。 –

回答

-1

我在编写这段代码的时候有一个疑问,即我是否应该为高优先级队列和低优先级队列分别设置一个锁?或者我应该为高优先级和低优先级队列设置一个通用锁。

两个锁将允许同时写入高优先级队列和低优先级队列。一个锁不会。此外,单一锁定将阻止写入队列,同时从队列读取项目。因此,由于锁争用较少,因此两个锁将执行比写入更好的锁。对于队列读取的性能,一个锁实现比两个更容易,但执行类似。

-1

我会建议只使用一个锁,因为它使实现更简单,并且由于更简单的实现可能会导致更好的性能。使用单锁,读卡器实现仅仅是:

  1. 获取锁。

  2. 检查高优先级队列,如果有工作,把工作从队列中,解锁,做工作,并转到步骤1.

  3. 检查低优先级队列,如果有工作,取出队列中的工作,解锁,完成工作,然后转到步骤1.

  4. 在单个条件变量上阻塞。

  5. 转到步骤1