1. ホーム
  2. multithreading

[解決済み] "フリースレッド "と "スレッドセーフ "の違いについて

2022-02-14 08:14:20

質問

クラスやメソッドを説明するために、"free-threaded"という言葉を時々見かけますが、これは何ですか?スレッドセーフと同じような意味合いなのでしょうか?

この2つの用語には違いがあるのでしょうか?

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

他の文脈では他の意味があるかもしれませんが、私が過去に扱ったケースでは、quot;free threaded"は、アパートメント間のマーシャリングなしに異なるスレッドで動作する、または少なくとも動作可能であることを意味しています。

アパートメント・スレッディングは対照的に、quot;global" データ(考えてみれば、これは実際にはグローバルではありません)の個別のコピーで異なる "apartments" をブロックし、アパートメントで動作するスレッドを 1 つだけ許可するか、または複数許可しても、他のアパートメントを使用するものとは別のものになるかのどちらかになります。

さて、アパートメントモデルはそれ自身のスレッドセーフを提供するので、スレッドセーフに関するいくつかの懸念は解消されます(すべてではありません)。アパートメントモデルで動作するように設計されたコードは、スレッドセーフですが、そのスレッドセーフの一部または全部は、アパートメントモデルから来るものです。

自由なスレッドコードは、それが主張するスレッドセーフの程度にかかわらず、完全な保証を提供しなければなりません。

つまり、アパートメントモデルのコードを使用する際のスレッドセーフを考慮する必要がない場合は、スレッドセーフとほぼ同じ意味になります。