2

いくつか簡単な質問があります。C で新しい子スレッドを作成した場合、スレッドが処理を終了して終了した後、次のようにします。

  • メモリマップされたオブジェクトは「自動的に」解放されますか? (Cにはガベージコレクタがないことは知っていますが、この時点で子は終了しています)

投稿が速すぎたと思います。2 番目の質問に対する回答が見つかりました (将来の参照用): http://www.ibm.com/developerworks/linux/library/l-memory-leaks/index.html?ca=drs-

  • 子は親スレッドに値を返すことができますか? (これは、いくつかの一般的なルーチンを使用して可能ですか?子と親のメモリ空間が同じであることは知っていますか?)

また、OSがPOSIXに準拠していることにも言及したいと思います。

ありがとう、ネコ

4

2 に答える 2

4

すでにわかっているように、最初の質問に対する答えは「いいえ」です。これは、ヒープに割り当てられたオブジェクトにも当てはまります。

プロセス内のスレッド間には親子関係がないため、「親スレッド」は意味がありません。しかし、はい、スレッドは終了時に値を返すことができます。スレッドのトップレベル関数のプロトタイプは次のとおりです。

void *function(void *);

戻り値の型が であることを確認してvoid *ください。スレッドは (好きなものへの) ポインターを返すことができます。この戻り値は、戻りスレッドが を使用して完了するのを待機している他のスレッドによって取得されますpthread_join()

于 2012-04-13T15:09:46.413 に答える