如何正确删除互斥? 使用C++,在我的一个析构函数中,我说 mutex = NULL;

如何正确删除互斥? 使用C++,在我的一个析构函数中,我说 mutex = NULL;,c++,pthreads,posix,mutex,C++,Pthreads,Posix,Mutex,但是,这会在我的Xcode中导致错误“没有可行的重载“=”” 以前在构造函数中初始化的互斥体与 mutex = PTHREAD_MUTEX_INITIALIZER; 请告知,如何正确处理这一点,作为C++析构函数 的一部分,您可以使用 pthRead MutExxDebug()/Mule>来破坏互斥对象。 根据规范: pthread_mutex_destroy()函数 将销毁互斥对象 被互斥引用;互斥对象 实际上,它变得未初始化。一 实施可能导致 pthread_mutex_destroy()

但是,这会在我的Xcode中导致错误“
没有可行的重载“=”

以前在构造函数中初始化的互斥体与

mutex = PTHREAD_MUTEX_INITIALIZER;

请告知,如何正确处理这一点,作为C++析构函数

的一部分,您可以使用<代码> pthRead MutExxDebug()/Mule>来破坏互斥对象。 根据规范:

pthread_mutex_destroy()函数 将销毁互斥对象 被互斥引用;互斥对象 实际上,它变得未初始化。一 实施可能导致 pthread_mutex_destroy()设置 对象的互斥引用 无效值。被破坏的互斥体 对象可以使用 pthread_mutex_init();结果 否则,在 它已被销毁,但未定义


正如巴克斯所说,使用
pthread\u mutex\u destroy()
。如果互斥体是C++类的成员,我想知道为什么用代码> pthRead MutExxIn初始化器< /> >初始化它,而不是使用<代码> pthRead MutExxIn()>代码>,因为宏形式更适合初始化而不是赋值。

< P>不必在静态分配的互斥体上使用pthRead MutExpEngy。如果在堆栈或堆上分配了互斥体,则应使用pthread_mutex_init和pthread_mutex_destroy。最重要的是,在销毁之前确保互斥锁已解锁。

您可以使用
pthread\u mutex\u destroy()
销毁互斥锁对象。@Bacchus,这应该是一个答案,这样我可以对它进行投票。:)@Bachhus请“回答”,这样我就可以给你信任
mutex=PTHREAD\u mutex\u初始值设定项不是初始化。声明器在哪里?+1。当然,最初尝试不起作用的原因是
NULL
不是
pthread\u mutex\u t
(并且没有可行的转换)。