使用C++,在我的析构函数中的一个,我说如何正确删除互斥锁?
mutex = NULL;
然而,这导致我的Xcode错误“No viable overloaded '='
”。
同一个互斥以前初始化在构造函数
mutex = PTHREAD_MUTEX_INITIALIZER;
请指教,我如何能够妥善处理这是C++的析构函数
使用C++,在我的析构函数中的一个,我说如何正确删除互斥锁?
mutex = NULL;
然而,这导致我的Xcode错误“No viable overloaded '='
”。
同一个互斥以前初始化在构造函数
mutex = PTHREAD_MUTEX_INITIALIZER;
请指教,我如何能够妥善处理这是C++的析构函数
的一部分,您可以使用pthread_mutex_destroy()
破坏互斥对象。
按照POSIX规格:
的pthread_mutex_destroy()函数 应销毁mutex引用互斥对象 ;互斥对象 实际上变为未初始化。 实现可能导致 pthread_mutex_destroy()将互斥体引用的对象 设置为 无效值。可以使用 pthread_mutex_init()重新初始化被销毁的互斥对象 ; 否则引用 之后的对象的结果是未定义的。
+1。原始尝试不起作用的原因当然是'NULL'不是'pthread_mutex_t'(并且没有可行的转换)。 – 2011-05-28 01:36:03
正如bacchus所说,使用pthread_mutex_destroy()
。如果互斥量是C++类的成员,我想知道为什么您使用PTHREAD_MUTEX_INITIALIZER
而不是使用pthread_mutex_init()
来初始化它,因为宏窗体更适合于初始化而非分配。
不需要在静态分配的互斥体上使用pthread_mutex_destroy。如果你的互斥体被分配到堆栈或堆上,你应该使用pthread_mutex_init和pthread_mutex_destroy。最重要的是确保互斥体在破坏之前解锁。
您可以使用'pthread_mutex_destroy()'销毁互斥对象。 – bacchus 2011-05-28 01:25:21
@Bacchus,这应该是一个答案,所以我可以upvote它。 :) – sarnold 2011-05-28 01:30:45
@Bachhus请“回答”,所以我可以给你信用 – JAM 2011-05-28 01:31:40