我有一个由Consumer
类和Producer
类组成的线程程序。当前,我在实现中使用Fifo queue.Queue
,其中生产者put
将数据放在队列的末尾,而消费者get
将其放在队列的末尾。
但是,我想添加一个功能,如果需要,Consumer
可以通过将其放回到put
的前面来get
退回Queue
的(可能稍作修改的)项目。 (这样get
返回的下一个项目就是刚刚添加的项目,就像在堆栈中一样。)>
我知道这对于deque
是可行的,但是我已经读过here,它们仅对append()
和popleft()
具有线程安全性。出于上述目的,我还需要使用appendleft()
。
是否存在具有deque
功能的线程安全数据结构?如果不是,是否可以在每次使用deque
时都放置自己的锁来使appendleft
线程安全?
我有一个由Consumer类和Producer类组成的线程程序。当前,我在实现中使用Fifo queue.Queue,其中生产者将数据放在队列的末尾,然后...
虽然某些deque
功能不是线程安全的,但您应该尝试做的是。