はい、スピンウェイトはシングルコアマシンでは役に立たず、逆効果ですが、そのようなマシンはますます稀です。
.NET 4.0では、より高度なSpinWait
構造が導入されています。シングルコアマシンで使用すると、すぐに現在のスレッドのタイムスライスを放棄し、他のスレッドで進行を許可します。 (ハードウェアがバックグラウンドで進歩することができるので、この意味ではスピン・ウェイティングはシングルコア・マシンでもハードウェア・ドライバーには意味をなさないが、ハードウェア・ドライバーはILでは書かれていない。)
同様に、*Slim
シングルコアマシンで使用する場合、タイプは回転を使用しません。 Slim
とは異なり、より速く、よりシンプルで、必要なリソースが少なくて済むように書かれています(Semaphore
は、カーネルオブジェクトに裏打ちされています。たとえば、SemaphoreSlim
はそうではありません)。
一般に、コアの数に関係なく、*Slim
のタイプを使用する必要があります。実際に回転しないため、実際に回転が必要な場合はほとんどの場合(ほとんどの場合、独自の同期プリミティブを実装しない限り)構造体を使用します。そうするのが理にかなっていない限り。
私はあなたの前提が正しいと信じていますが、私は***の仮定をバックアップするという事実はありませんので、答えとして投稿するつもりはありません。 –
@ScottChamberlainありがとうございます。 –