pthreads互斥锁断言错误

pthreads mutex lock assertion error

本文关键字:断言 错误 pthreads      更新时间:2023-10-16

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

在一些随机情况下,我会出现以下错误。

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

在这种情况下,问题是如果thread2正确地解锁互斥体并执行pthread_destroy并通过exit(1)死亡,那么如果thread1在pthread_destroy之后试图锁定同一互斥体,你会得到"this"错误还是其他错误?

当你违反规则时,你会得到哪个错误(如果有的话)取决于平台。所以你必须自己测试才能确定。这是一个"你甚至不允许尝试这个"的条件,所以当你这样做的时候没有规则。