我正在开发一个多线程程序,并且有一个关于在哪里定义互斥锁的问题。
相关信息:程序有一个main.c
我们根据用户输入确定具体动作的地方。main 调用一个 master_function,它位于一个名为master.c
. 在master.c
文件中,我们创建了 N 个线程以及其他一些操作(不相关)。线程调用位于son.c
文件中的名为 son_threads 的函数,当它们进入关键区域时需要使用互斥锁(编辑多个全局变量以防止竞争条件)。我拥有的另一个文件是type.h
我定义了几个需要使用的全局变量的地方。
互斥量的声明是:
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
所以我试图在我type.h
的文件中定义互斥锁,以便它对son.c
文件可见。当我尝试编译时,它给了我错误。这是正确的,因为我在几个文件中定义了该互斥锁。
但我很确定我无法在son.c
文件中定义互斥锁,因为每次创建该线程时,互斥锁都会被初始化为其默认设置,不允许我正确使用它。不确定这一点。
互斥锁必须是一个全局变量,N 个线程可以访问它。那么我应该把它放在哪里呢?
我不知道我是否正确地解释了自己。尽我所能。