1. ホーム
  2. multithreading

[解決済み] スレッドセーフとは何ですか?

2022-05-14 15:46:26

質問

最近、あるスレッド (UI スレッド以外) からテキストボックスにアクセスしようとしたところ、例外がスローされました。それは、コードがスレッドセーフでないことについて何かを言ったので、私はデリゲート (MSDN からのサンプルは役に立ちました) を書いて、代わりにそれを呼び出すことにしました。

しかし、それでも、なぜすべての余分なコードが必要なのかよく理解できませんでした。

更新しました。 このままでは、何か重大な問題が発生するのでは?

Controls.CheckForIllegalCrossThread..blah =true

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

エリック・リッパート というタイトルの素敵なブログポストがあります。 スレッドセーフと呼ばれるものは何ですか? というタイトルのブログ記事で、Wikipedia にあるスレッドセーフの定義について説明しています。

リンク先から抽出した3つの重要なこと。

「複数のスレッドが同時に実行されたときに正しく機能する場合、スレッドセーフである。 複数のスレッドによる同時実行時に正しく機能する場合、コード片はスレッドセーフである。"

"特に、複数のスレッドが同じ共有データにアクセスする必要性を満たす必要があります。 同じ共有データにアクセスする必要があります。

"...そして、共有されたデータの一部に対して、任意の時点で1つのスレッドだけがアクセスする必要性 スレッドによってアクセスされる必要があります。

間違いなく一読の価値あり!