我有一个 file1.c 与:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
在全球。在 file1.h : extern pthread_mutex_t mutex;
。但我也在 file2.c 中调用了这个互斥锁。
file1.c 和 file2.c 使用这样的互斥锁:
文件1.c:
#include "finc1.h"
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *f1()
{
if (...)
{
pthread_mutex_unlock(&mutex);
return (NULL);
}
if (...)
{
pthread_mutex_unlock(&mutex);
return (...);
}
else
{
...
}
pthread_mutex_unlock(&mutex);
return (...);
}
void *f2()
{
...
pthread_mutex_unlock(&mutex);
return (...);
}
void *func1()
{
pthread_mutex_lock(&mutex);
if (...)
return (f1());
if (...)
return (f1());
return (f2());
}
文件1.h:
...
extern pthread_mutex_t mutex;
...
文件2.c:
#include "finc1.h"
void func2()
{
pthread_mutex_lock(&mutex);
...
pthread_mutex_unlock(&mutex);
}
我还有另一个文件,比如说带有 func3() 的 file3.c,它没有任何互斥体,但先调用 func1(),然后调用 func2()。
文件 3.c:
#include "finc1.h"
void func3()
{
if(...)
return(func1());
func1();
func2();
}
现在问题来了。那个互斥锁只能在 10 次以上工作 1 次。我不知道为什么。我做错什么了吗?
提前致谢 !