【发布时间】:2018-02-16 19:48:21
【问题描述】:
我有一个由Consumer 类和Producer 类组成的线程程序。目前,我在实现中使用了 Fifo queue.Queue,其中生产者 puts 队列末尾的数据和消费者 gets 它。
但是,我想添加一个功能,如果需要,Consumer 可以通过将put 放回 gets 的前面(可能稍作修改)将其放回 @987654330 的前面@(这样get 返回的下一项就是刚刚添加的项,就像在堆栈中一样)。
我知道deques 可以做到这一点,但我读过here,它们仅对append() 和popleft() 是线程安全的。出于上述目的,我还需要使用appendleft()。
是否存在具有deque 特性的线程安全数据结构?如果没有,我是否可以通过在使用appendleft 时放入自己的锁来使deque 线程安全?
【问题讨论】:
标签: python multithreading collections thread-safety deque