アカウント名:
パスワード:
プロセスが強制終了すると勝手に開放される、頭おかしいとAdvanced Windowsの著者がMSDN magazineでキレて代替のライブラリ(Optex)を誌面に掲載していたのを思い出す
インプロセス用ですね。当然の動作だとしか思えん。C#でクリティカルセクションの中でasync/awaitを書いたらVisualStudioもちゃんと指摘してくれるぐらいの話。
確かに言われてみたらなんかおかしいなと思って記事を見返してみたら、プロセスじゃなくてスレッドだった。スレッドがクリティカルセクションを取得している間にTerminateThreadで殺されると、そのクリティカルセクションは解放されず他のスレッドはクリティカルセクションに入れなくなるべきだし、NTでは実際そのように実装されているが、Win95はそうではないという話。
https://learn.microsoft.com/ja-jp/windows/win32/api/synchapi/nf-syncha... [microsoft.com]
クリティカル セクションの所有権がある間にスレッドが終了した場合、クリティカル セクションの状態は未定義です。
所有権持ったまま死なすほうが変て話なんだけどな。まぁそんな古いもの今更どうでもいい話なんだが。
> 所有権持ったまま死なすほうが変
まあそれはTerminateThread使うなという話に帰着するが。死んでもクリティカルセクション中の中途半端なデータ状態が自動的に復元されるわけではないのだから、自動的に所有権を解放して別のスレッドに処理開始を許したら、データ破壊がどんどん進行していくだけ。
> そんな古いもの今更どうでもいい
クリティカルセクションは今でも現役バリバリで使われているはずだけどね。所有権持ったまま死なす現在のWindows(NT系)はおかしいと主張しているのかな
Windows95の駄目実装の話してるんと違うの?NTはちゃんとしてるのに、95は駄目だった。って話してたように読み取ったけど…95系は死滅してるよね??
だよね、9xなんて歴史の彼方。MS悪く言いたいだけなんじゃね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
Windows 95のクリティカルセクション (スコア:0)
プロセスが強制終了すると勝手に開放される、頭おかしいとAdvanced Windowsの著者がMSDN magazineでキレて代替のライブラリ(Optex)を誌面に掲載していたのを思い出す
Re: (スコア:0)
ミューテックスorセマフォではなくて?
Re: (スコア:0)
インプロセス用ですね。当然の動作だとしか思えん。
C#でクリティカルセクションの中でasync/awaitを書いたらVisualStudioもちゃんと指摘してくれるぐらいの話。
Re:Windows 95のクリティカルセクション (スコア:0)
確かに言われてみたらなんかおかしいなと思って記事を見返してみたら、プロセスじゃなくてスレッドだった。スレッドがクリティカルセクションを取得している間にTerminateThreadで殺されると、そのクリティカルセクションは解放されず他のスレッドはクリティカルセクションに入れなくなるべきだし、NTでは実際そのように実装されているが、Win95はそうではないという話。
Re: (スコア:0)
https://learn.microsoft.com/ja-jp/windows/win32/api/synchapi/nf-syncha... [microsoft.com]
クリティカル セクションの所有権がある間にスレッドが終了した場合、クリティカル セクションの状態は未定義です。
所有権持ったまま死なすほうが変て話なんだけどな。
まぁそんな古いもの今更どうでもいい話なんだが。
Re: (スコア:0)
> 所有権持ったまま死なすほうが変
まあそれはTerminateThread使うなという話に帰着するが。死んでもクリティカルセクション中の中途半端なデータ状態が自動的に復元されるわけではないのだから、自動的に所有権を解放して別のスレッドに処理開始を許したら、データ破壊がどんどん進行していくだけ。
> そんな古いもの今更どうでもいい
クリティカルセクションは今でも現役バリバリで使われているはずだけどね。所有権持ったまま死なす現在のWindows(NT系)はおかしいと主張しているのかな
Re: (スコア:0)
Windows95の駄目実装の話してるんと違うの?
NTはちゃんとしてるのに、95は駄目だった。って話してたように読み取ったけど…
95系は死滅してるよね??
Re: (スコア:0)
だよね、9xなんて歴史の彼方。
MS悪く言いたいだけなんじゃね。