シンプルな質問 - 基本的に、私はミューテックスのロックを解除する必要がありますか?または単にスコープ演算子を使うことができますか?ミューテックスは自動的にロック解除されますか?ミューテックスが有効範囲外になるとロックが解除されますか?
すなわち:
{
pthread_mutex_lock (&myMutex);
sharedResource++;
} // my mutex is now unlocked?
またはべきI:RAIIスコープ方式を使用して
{
pthread_mutex_lock (&myMutex);
sharedResource++;
pthread_mutex_unlock (&myMutex);
}
どのmutex実装を使用していますか?あなたがmutexの実装でRAIIをサポートしていない限り、明示的にmutexのロックを解除する必要があります。 – Void
ありがとう@Void。私はpthread.hを使用しています。つまり、pthread_mutex_unlock()とpthread_mutex_lock()です。 RAIIとは何ですか? –
@AmitNayar:http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initializationを参照してください。C++ではおそらくメモリやその他の動的リソースを正しく管理することが不可能なので、おそらくC++の最も重要なイディオムです。 –