0

次の C コードを実行すると、プログラムがハングし、シグナル (CTRL-C を含む) に応答しなくなります。

int main()
{
    pthread_exit(0);
    return 0;
}

理由はありますか?

他のスレッドが作成されて実行されている場合の動作は正常ですが、pthread_exit(0) を使用する前に常に確認する必要があるかどうかを知りたいです。

編集:これはハングする完全なコードです。ただし、glib (-lglib-2.0) でビルドしていました。単純に cc -o foo foo.c を使用すると、期待どおりに機能します。

4

1 に答える 1

0

ユースケース全体は、pthread_exit man pageのメモに記載されています。あなたの場合、OPを正しく編集したため、glibは別のスレッドを開始しました。メインスレッドを終了し、他のスレッドが実行を続けました。あなたはこれをハングと分類しました。一般に、アプリケーションを完全に終了したい場合は、単に を使用するか、から戻ります。exitmain()

切り離されたスレッドのような追加の魔法が (まれに) 必要な場合にのみpthread_exit()、メイン スレッドで使用します。

于 2016-05-19T12:53:24.730 に答える