【发布时间】:2014-08-21 15:16:21
【问题描述】:
我尝试在我的代码中添加一个部分,以便在取消的情况下解锁互斥锁。这可能会发生并且会导致死锁。因此,我尝试添加pthread_cleanup_push(cleanup_unlock_mutex, &mutex_ftdi);,但这一行会导致从添加它的行到代码文件末尾出现语法错误。如果我注释代码行,程序将编译而没有任何错误。
我做错了什么?
void cleanup_unlock_mutex(void *p){
pthread_mutex_unlock(p);
}
....... }else{
for(unsigned count=0; count <= number_of_requests; count++){
pthread_cleanup_push(cleanup_unlock_mutex, &mutex_ftdi);
pthread_mutex_lock(&mutex_ftdi);
process_requests(count, numberofthread);
pthread_mutex_unlock(&mutex_ftdi);
}
} // compiler error: error: expected ‘while’ before ‘}’ token
..........
文件中的所有其他函数都会收到警告:ISO C 禁止嵌套函数 [-pedantic]。
【问题讨论】:
-
}错过了。你能先缩进代码吗?奇怪的!!!!else没有if?while循环在哪里?发布整个代码。 -
but I do not want to post the if section of the code.如果你不想,那么任何人都不想给你答案。 -
@IrgendwPointer :我相信您只有
pthread行代码会导致问题,这就是您不想显示代码的原因,但请考虑显示一段可编译/可运行的代码,以便任何人都可以尝试找出您的错误并给您答复 -
为什么这个问题被关闭了?它显然有足够的信息来诊断和回答。它甚至可能对可能遇到相同问题的人有所帮助。