1. ホーム
  2. python

[解決済み] Pythonのアトミック操作とは?

2022-02-10 06:57:35

質問

私はPythonの初心者です。今、スレッドについて読んで、いくつかの質問があります。

IMO Atomic Operations (AO) = 最も単純な操作。 a = 1 . しかし、私は記事を読みました( http://preshing.com/20130618/atomic-vs-non-atomic-operations/ 一番簡単な操作であるAOをやっていない印象があります。この演算は2つの演算に分かれていて、この演算はAOではないと言われました。この演算がAOであるためには、別の型が必要なのだそうです。でも、C/C++やバイトコードの話だから、Pythonでも同じだと思うんだけど。これは、型とコンパイラに依存するものだと思う。しかし、Pythonは動的型言語である。Pythonには型がありません。

そして、このような質問をコミュニティに投げかけてみることにしたのです。

  1. Pythonのアトミック操作とは何ですか?

  2. PythonのAOはどのような操作ですか?

単純な操作が単純でないのなら、Atomic Operationsとは何なのか理解できません。

どのように解決するのですか?

PythonのドキュメントのFAQに、この質問に対するかなり良い答えがあるようです。 どのようなグローバルな値の変異がスレッドセーフですか?

ローカルスタック変数や特定のスレッドのプライベート変数でスレッドセーフの問題がないものと、グローバル変数や共有変数で問題があるものの違いを理解していただけたでしょうか。