私はthis questionに触発されたいくつかの研究をしていましたが、同様の問題に対する提案されたソリューションのいくつかが静的変数の初期化時にミューテックスオブジェクトを作成したことに気付きました。このようなmutexは、それを作成したスレッドがアプリケーションの存続期間中も生き残っている場合にのみ、必要に応じて動作します。静的変数は特定のスレッドで初期化されていますか?
静的変数はプロセスのメインスレッドによって初期化されているようですが、メインの関数が終了したときだけプロセスのメインスレッドが終了するという合理的な推測のようです(おそらくプログラマの制御下にあります)。
しかし、これらはどちらもC#言語標準によって実際に保証されていますか?
PS:私はWindowsスレッドではなく、.NETスレッドについて説明しています。
スレッドに関するあなたの前提は正しくありません。メインスレッドは、他のスレッドが終了する前に終了することができます。それについて[ここ](http://stackoverflow.com/questions/31128935/c-sharp-child-thread-is-still-working-even-main-thread-exit)に関する質問がありました。 – GolezTrol
@GolezTrol:ありがとう。この例では、main関数が終了するだけでメインスレッドが終了するため、この文脈ではそれ自体が致命的ではないと私は考えています。これはプログラマの制御下にあります。したがって、mutexが解放されるまでプログラマが主関数を終了しないようにすることができます。しかし、言語標準が主な機能が果たされるまで主スレッドが終了しないことを保証するかどうかという疑問はまだ残っています。 (それに応じて更新された質問) –