通常、マルチスレッド プログラムは非決定論的であると言われています。つまり、クラッシュした場合、その状態を引き起こしたエラーを再現することはほぼ不可能です。次にどのスレッドが実行されるか、またいつ再プリエンプトされるかはまったくわかりません。
もちろん、これは OS のスレッド スケジューリング アルゴリズムと関係しており、次にどのスレッドが実行されるか、またそれが実際にどれくらい実行されるかがわからないという事実に関係しています。プログラムの実行順序も役割を果たします。
しかし、スレッドのスケジューリングに使用されるアルゴリズムがあり、どのスレッドがいつ実行されているかを知ることができれば、マルチスレッド プログラムは「決定論的」になり、クラッシュを再現できるようになるでしょうか?