6

プロセスとスレッドに関するいくつかの新しいトピックを読んでいたので、これらの質問が頭に浮かびました。誰かが私を助けてくれたらうれしいです。

1) スレッドがキャンセル不可とマークされ、プロセスがクリティカル セクション内で強制終了された場合はどうなりますか?

2) オペレーティング システムに認識されているプログラムのメイン スレッドはありますか? つまり、オペレーティング システムは、プログラムの最初のスレッドに何らかの有益な権利または何かを与えるということですか?

3) プロセスを強制終了し、スレッドが結合されていない場合、スレッドはゾンビになりますか?

4

1 に答える 1

5

まず、スレッドを強制終了またはキャンセルしないでください。スレッド自体を強制終了するように依頼してください。外部からスレッドを強制終了すると、変数、同期プリミティブの状態など、どのような副作用が残るかわかりません。あるスレッドが別のスレッドを終了する必要がある場合は、問題のあるスレッドにスイッチをチェックさせ、シグナルなどをキャッチさせ、終了する前にその状態をクリーンアップさせます。

1) 取り消し不可とは、結合されたスレッドと同じ、切り離されたという意味です。やみくもに殺していると、どんな混乱を残しているのかわかりません。

2) アプリケーション レベルの観点から、主なことは、メイン スレッドが exit() または return() の場合、他のすべてのスレッドを停止することです。メインスレッドが pthread_exit() で終了した場合、残りのスレッドは続行します。

3) プロセスと同じように、スレッドは切り離されて実行されない限り、リープ (結合) されるか、プログラムが終了するまで、一部のリソースを保持します。

RE 注: スレッドは、それぞれ独自のスタックを共有しません。スレッドの作成に関する情報については、clone()を参照してください。

于 2010-10-08T13:46:53.483 に答える