我正在处理一些C代码,在锁定互斥锁时遇到了问题。该代码调用了一个函数,并在该函数中锁定一个互斥锁,以确保文件指针不会被覆盖。对于多个实例,大约有10-20次单独调用该函数,这样做是有效的,但在下一次调用时,pthread_mutex_lock将返回22的结果。然后,我将此结果输入strerror(); 并得到无效的参数。
无效的参数是什么意思?感谢您提供的任何帮助。
22是一个错误代码,ENVAL
,意味着参数无效。请确保您已经初始化了互斥锁,或者在某个地方取消了初始化。
EINVAL
使用PTHREAD_PRIO_PROTECT协议属性创建的互斥锁,当前调用线程的优先级高于互斥锁的当前优先级上限。
我不太理解这个,但它可能意味着您需要更改线程的优先级。我不确定。也许其他人可以解释清楚。