3

TVars の GHC 実装はlock-freeであるが、wait-freeではない、と信じ込まされてきました。待ち時間のない実装はありますか (Hackage のパッケージなど)?

4

2 に答える 2

3

待機フリーダムは、分散コンピューティングの用語です。他のスレッドからのすべての入力がいつでも遅延または失われた場合でも、スレッド (または分散ノード) が正しく終了できる場合、 アルゴリズムはウェイトフリーです。

一貫性を重視する場合、待機の自由を保証することはできません (常に正しく終了したい、つまり可用性を保証したい場合)。これはCAP 定理[1] に従います。

[1] http://en.wikipedia.org/wiki/CAP_theorem

于 2012-04-20T07:44:23.830 に答える
1

あなたの質問「ウェイトフリーの実装はありますか?」少し不完全です。STM (したがってTVar) はかなり複雑で、サポートがコンパイラに組み込まれています。Haskell プリミティブを使用して適切にビルドすることはできません。

ミューテーションを許可し、非ブロッキングにできるデータ コンテナーを探している場合は、IORefs またはMVars が必要です (ただし、値が利用できない場合はブロックできます)。

于 2012-04-20T03:01:12.610 に答える