【问题标题】:twisted - is Factory object thread safe?扭曲 - 工厂对象线程安全吗?
【发布时间】:2015-01-27 04:00:09
【问题描述】:

以下代码监听 2 端口,当有消息修改全局 dict 对象时。还有一个定时器也会修改dict。

d = {}
class x(Protocol):
    def dataReceived(self, data):
        # according to data call x's function
        self.f()
    def f(self):
        global d
        d['x'] = 'x'
class y(Protocol):
    def dataReceived(self, data):
        # according to data call y's function
        self.f()
    def f(self):
        global d
        d['y'] = 'y'
def modify_d():
    global d
    for k in d.keys():
        if d[k] == 'whatever':
             del d[k]
reactor.listenTCP(8880, x())
reactor.listenTCP(8881, y())
lc = task.LoopingCall(modify_d)
lc.start(300)
reactor.run()

访问时需要在d周围加锁吗?

【问题讨论】:

    标签: python multithreading twisted


    【解决方案1】:

    这不是线程安全的,但这没关系。你不需要锁。 Twisted 在同一个主 I/O 线程中运行所有回调(除了那些涉及专门提到线程的 API 的回调),因此您不必担心同时运行多个事物。

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多