【问题标题】:Can threading.Event be used to protect variable access in Python?可以使用 threading.Event 来保护 Python 中的变量访问吗?
【发布时间】:2020-02-17 11:40:18
【问题描述】:

我在一些 Python 代码中有一个相对简单的场景,其中我有两个线程,其中一个设置一个值,另一个正在等待它被设置。我的直觉是联系threading.Condition 来实现这一点,但我想知道是否可以简单地使用threading.Event

所以,我有这样的事情:

value = None
readyToRead = threading.Event()

def set():
    # executes in thread 1
    global value
    value = computeValue()
    readyToRead.set()

def get():
    # executes in thread 2
    readyToRead.wait()
    useValue(value)

我想我很不安,因为对value 的访问实际上不受互斥体保护,而且我认为至少在某些语言中,仅仅依靠代码中的语句所暗示的顺序可能并不安全。

这是在 Python 中对Event 的有效使用吗?

【问题讨论】:

    标签: python multithreading events


    【解决方案1】:

    是的,这是事件的有效用例.. 值受线程保护。 如果增加线程数,则必须在所有线程中等待。如果是这种情况,您可以使用信号量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 2014-07-26
      • 2017-11-11
      • 2014-04-04
      • 1970-01-01
      • 2023-04-09
      • 2014-05-14
      相关资源
      最近更新 更多