2011-05-11 100 views
0

Python中是否存在同步集合类?像Queue.Queue?我将消息发送到JMS队列和需要处理reciepts:Python中的同步集合

  • 跟踪发送的消息在一组
  • 当收到一张收据,删除它从集合
  • 当设定为空,设置一个事件

Queue相同的界面将是完美的,但我需要能够以任何顺序删除的东西。

+1

设置操作是原子的(因为GIL)。然而,没有原子“检查设置是否为空并设置了事件”。 – 2011-05-11 18:43:57

回答

2

好吧Queue.Queue使用底下的dequeand deque is not thread safe)。

所以你可以做的是扩展Queue.Queue类并添加一个新方法,并且你可以调用deque方法deque.remove()(如果这是你的意思,通过删除任何顺序的元素),并确保你的新方法是线程安全的,看看Queue.Queue.put()方法,看看你应该做什么的例子。

好吧,如果你错过了某些东西,那么它有点冒险,并且竞争条件问题很难调试,但是希望这可以给出一个清晰的视图。