2017-10-03 8 views
1

mutex/condition変数があるとします。私は(pthread_mutex_init/pthread_cond_init)を初期化しますが、決してそれらを使用しません(ロック操作なし、シグナル/待機なし)。未使用のpthreadミューテックスまたは条件変数はどのようなリソースに割り当てられますか?

これらの未使用オブジェクトは、占有するメモリ以外の他のリソースを割り当てますか?

(私はLinuxとこの点でOSXの行動に興味がある)

答えて

1

POSIXが明示的にこれらの機能は、リソース不足(EAGAINENOMEMエラーコード)に失敗する可能性がありますことを企図しているが、どちらのLinux glibcのpthread_mutex_init()またはpthread_cond_init()のOSX実装もリソースを割り当てません。

Linux glibcの実装pthread_mutex_init()は、nptl/pthread_mutex_init.cです(関数__pthread_mutex_init()を参照)。これは、ソースコードを直接調べることで確認できます。

pthread_cond_init()のLinux glibcの実装は、nptl/pthread_cond_init.cです(関数__pthread_cond_init()を参照)。

pthread_mutex_init()

のOSXの実装では、(マクロ_PTHREAD_LOCK_INIT参照)libpthread/pthread_mutex.c(機能pthread_mutex_init()_pthread_mutex_init()とを参照)、libpthread/internal.hです。

pthread_cond_init()のOSX実装はlibpthread/pthread_cond.cです(関数pthread_cond_init()および_pthread_cond_init()を参照)。

+0

ありがとうございます!私はこれらを自分で確認しましたが、実際にはリソースが割り当てられていないようです。 – geza

関連する問題