我正在C中编写代码,其中有多个写入高优先级队列或低优先级队列和单个工人(或消费者)从高优先级队列和低优先级队列读取的线程。需要关于多线程线程,单个工作线程模型的建议
我有一个使用pthread mutex的线程同步机制。
我在写这段代码的时候有一种怀疑,即我是否应该为高优先级队列和低优先级队列分别设置一个锁? 或我应该有一个高低优先级队列的公共锁。
我正在C中编写代码,其中有多个写入高优先级队列或低优先级队列和单个工人(或消费者)从高优先级队列和低优先级队列读取的线程。需要关于多线程线程,单个工作线程模型的建议
我有一个使用pthread mutex的线程同步机制。
我在写这段代码的时候有一种怀疑,即我是否应该为高优先级队列和低优先级队列分别设置一个锁? 或我应该有一个高低优先级队列的公共锁。
我在编写这段代码的时候有一个疑问,即我是否应该为高优先级队列和低优先级队列分别设置一个锁?或者我应该为高优先级和低优先级队列设置一个通用锁。
两个锁将允许同时写入高优先级队列和低优先级队列。一个锁不会。此外,单一锁定将阻止写入队列,同时从或队列读取项目。因此,由于锁争用较少,因此两个锁将执行比写入更好的锁。对于队列读取的性能,一个锁实现比两个更容易,但执行类似。
我会建议只使用一个锁,因为它使实现更简单,并且由于更简单的实现可能会导致更好的性能。使用单锁,读卡器实现仅仅是:
获取锁。
检查高优先级队列,如果有工作,把工作从队列中,解锁,做工作,并转到步骤1.
检查低优先级队列,如果有工作,取出队列中的工作,解锁,完成工作,然后转到步骤1.
在单个条件变量上阻塞。
转到步骤1
发布您的代码。有办法做到这一点,没有任何锁。 –
现在它的方式太广泛了。发布具体信息,最好是代码,如果你能以简洁明白的形式得到它。 – MicroVirus
请找到伪代码,因为我无法粘贴确切的代码。 –