私は、PCがマルチコアを持っているとします。 3つの異なるコアで動作する3つのスレッドがあります。スレッド(T1)がコア(C1)でスピンロック(S)を取得し、T1によって取得ロックを取得し、コアC2で実行中の同じT2およびT3スレッドとロックの取得を待機します。 T1スレッドがロックを解放すると、どのスレッドがT2またはT3のいずれかのロックを取得しますか?私はT2とT3の優先順位を同じにしていると同時に、異なるコアで同時に待っています。Linuxでスピンロックを取得する
0
A
答えて
2
linuxカーネルはMCSスピンロックを使用します。要点は、ウェイターが自分自身をキューに追加することです。しかし、これを行うスレッドが2つある場合、最初に誰が成功するかについての保証はありません。
同様に、コードが単に「取られた」ビットを反転しようとするより単純なスピンロックでは、何も保証されません。ただし、特定のハードウェア特性によって、特定のコアが他のコアより簡単な時間を持つようにすることができます(同じソケットを共有する場合)。あなたはhttps://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html
を読みたい
私は繰り返し:2つの異なるスレッドがロックを競うならば、彼らはそれを取ると1を探していることは、そもそも間違っているであろうに何の保証順序はありません。
関連する問題
- 1. Linuxドライバコンテキストでのマイクロ秒の遅延とスピンロック
- 2. LinuxでマルチキャストソースIPアドレスを取得する
- 3. linuxでローカルコードページを取得するには?
- 4. LinuxでボリュームUUIDを取得する
- 5. Linuxのシステムコールを使用してスピンロックの値をユーザー空間に戻す
- 6. MACアドレスを取得するLinux(Ubuntu)
- 7. ソケットピアを取得するIPS linux
- 8. linuxからネイバーテーブルを取得する
- 9. Linux/SMPスピンロックが不必要に遅くなっていますか?
- 10. なぜこれがスピンロックですか?
- 11. Linuxでスクリーンベンダーとシリアル番号を取得
- 12. ウェブページでライブLinuxサーバログを取得
- 13. CでLinuxのCPU数を取得
- 14. スピンロックを保持しているカーネルプリエンプション
- 15. Linuxデバイスドライバが最初のアクセス時に進行中の読み取りのためにスピンロックに陥っていた
- 16. Linuxカーネル - 物理アドレスを取得する方法(メモリ管理)? Linuxで
- 17. Linuxプラットフォームで、Windowsではなくjava.lang.NoClassDefFoundErrorを取得する
- 18. CでLinuxでオープンソケットのリストを取得する方法は?
- 19. Linuxでc \ C++でネットカプセル化を取得するには?
- 20. IPv6 DNSサーバーリストをプログラムでLinuxで取得する
- 21. プログラムで(C/C++)Linuxで国コードを取得する方法は?
- 22. Linuxはコンテキストスイッチタイミングを取得します
- 23. linuxシェルですべてのエイリアスを取得する
- 24. Pythonでプロセスを開始し、PIDを取得する(Linux)
- 25. Linuxモノアセンブリでfile + line infoデバッグ情報を取得する方法
- 26. Linuxでプロセスごとにヒープとスタックのサイズを取得する
- 27. Linuxで親プロセスの状態を取得する
- 28. Linuxでパラレルポートプリンタの状態を取得するには?
- 29. LinuxでNIC RXリングの数を取得する方法
- 30. CでLinuxのFlash ROMのサイズを取得するには?
それに使用される戦略に応じて。ラウンドロビンは最も単純なものです。 – 0andriy