互斥锁会随机成功或失败,失败时会出现以下情况:
Invalid argument
Run Code Online (Sandbox Code Playgroud)
或者
tpp.c:62: __pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= __sched_fifo_min_prio && new_prio <= __sched_fifo_max_prio)' failed.
Run Code Online (Sandbox Code Playgroud)
该代码非常基本,您可以在此处看到:
pthread_mutex_t mutex;
main() {
int ret;
pthread_mutexattr_t attr;
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
ret = pthread_mutex_init(&mutex, &attr);
if (ret != 0) {
printf("pthread_mutex_init\n");
return 1;
}
ret = pthread_mutex_lock(&mutex);
if (ret != 0) {
printf("mutex_lock failed %s\n", strerror(ret));
return 1;
}
ret = pthread_mutex_unlock(&mutex);
if (ret != 0) {
printf("mutex_unlock failed %s\n", strerror(ret));
return -1;
}
Run Code Online (Sandbox Code Playgroud)
这是为什么 ?
你没有初始化attr。其内容未定义。
描述
该函数使用实现定义的所有属性的默认值
pthread_mutexattr_init()初始化互斥属性对象。attr
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |