2012-02-04 78 views
0

我有两个线程(通过pthread_create创建)。他们是join - 可用线程(不分离)。 但我没有做pthread_join对他们,错我知道,但问题不是这样。 线程共享堆中的数据结构,其中包含互斥锁。 只有锁定它的线程才能解锁互斥锁。pthreads互斥锁断言错误

我在某些随机情况下出现跟随错误。

pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' 

问题是,在这种情况下,如果线程2适当解锁互斥量并不会pthread_destroy,并通过exit(1)死了,现在这在线程试图pthread_destroy后锁定同一互斥体,你会得到“这个”错误或其他错误?

回答

2

当您违反规则时,您得到的错误取决于平台。所以你必须自己测试才能确定。这是一个“你不能尝试这个”的条件,所以当你做这件事时没有什么必然发生的规则。