【发布时间】:2013-07-18 16:45:28
【问题描述】:
简单的问题 - 基本上,我是否必须解锁互斥锁,或者我可以简单地使用范围运算符并且互斥锁会自动解锁?
即:
{
pthread_mutex_lock (&myMutex);
sharedResource++;
} // my mutex is now unlocked?
或者我应该:
{
pthread_mutex_lock (&myMutex);
sharedResource++;
pthread_mutex_unlock (&myMutex);
}
【问题讨论】:
-
您使用的是哪种互斥锁实现?除非您的互斥锁实现支持 RAII,否则您可能必须显式解锁互斥锁。
-
感谢@Void。我正在使用 pthread.h。即pthread_mutex_unlock() 和pthread_mutex_lock()。什么是 RAII?
-
@AmitNayar:见en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization。它可能是 C++ 中最重要的习惯用法,因为没有它几乎不可能正确管理内存和其他动态资源。
-
您应该编辑您的代码以显示您正在使用
pthread_mutex_lock等。这很重要。没有人知道mutex_lock是什么。
标签: c++ multithreading pthreads mutex