简单的问题 - 基本上,我必须解锁一个互斥锁,还是我可以简单地使用范围操作符,互斥锁将自动解锁?互斥锁在超出范围时是否解锁?
即:
{
pthread_mutex_lock (&myMutex);
sharedResource++;
} // my mutex is now unlocked?
或者我应该:
{
pthread_mutex_lock (&myMutex);
sharedResource++;
pthread_mutex_unlock (&myMutex);
}
您使用哪种互斥体实现?除非你是互斥体实现支持RAII,否则你可能不得不明确地解锁互斥体。 – Void
Thanks @Void。我正在使用pthread.h。即pthread_mutex_unlock()和pthread_mutex_lock()。什么是RAII? –
@AmitNayar:请参阅http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization。这可能是C++中最重要的成语,因为如果没有它,管理内存和其他动态资源几乎是不可能的。 –