【问题标题】:Python, concurency, critical sectionsPython、并发、临界区
【发布时间】:2022-11-17 19:48:56
【问题描述】:

在这里,我对可能的关键部分有一些疑问。

  1. 在我的代码中,我有一个处理队列的函数。此函数是唯一一个将元素放入队列的函数。但是许多线程并发地从这个队列中获取元素。由于有可能(我不确定是否存在这样的机会 tbh)多个线程将尝试同时从队列中获取一个元素,它们是否有可能从队列中获取完全相同的元素?

  2. 我的工作人员所做的其中一件事是打开一个文件(不同的工作人员在独占目录中打开不同的文件)。我正在使用上下文管理器“以 open(>some file<, 'w') 作为文件...”。那么有没有可能,多个线程同时打开不同的文件但使用完全相同的变量“文件”会把事情搞砸,因为看起来我这里有一个关键部分,不是吗?

【问题讨论】:

    标签: python concurrency queue critical-section


    【解决方案1】:

    您的第一个问题很容易通过队列类的文档来回答。如果您实现了自定义队列,则锁定在您身上,但 python 队列模块声明:

    在内部,这三种类型的队列使用锁来临时阻塞竞争线程;但是,它们并非设计用于处理线程内的重入。

    我不确定你的第二个问题是否来自第一个问题。 用一个例子来澄清你的问题会很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2013-03-26
      • 2013-04-07
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多