Ale*_*ire 5 c unix multithreading mutex semaphore
我正在研究一个多线程程序,并对如何定义互斥锁有疑问.
相关信息:程序具有main.c根据用户输入确定特定操作的位置.main调用master_function,它位于一个名为的文件中master.c.在master.c文件中,我们沿着一些其他操作(不相关)创建N个线程.线程调用名为son_threads的函数,该函数位于son.c文件中,当它们进入关键区域时需要使用互斥锁(编辑几个全局变量以防止竞争条件).我有另一个文件type.h,我定义了几个我需要使用的全局变量.
互斥的声明是:
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)
所以我试着在我的中定义互斥锁,type.h以便son.c文件可见.当我尝试编译时,它给了我错误.这是正确的,因为我在几个文件中定义了互斥锁.
但我很确定我无法在son.c文件中定义互斥锁,因为每次创建该线程时,互斥锁都会被初始化为默认设置,不允许我正确使用它.对此不确定.
互斥锁必须是一个全局变量,N个线程可以访问它.那么我应该放在哪里呢?
我不知道我是否正确地解释自己.尽我所能.
只需在文件中声明您的变量即可.h
extern pthread_mutex_t mutex1;
Run Code Online (Sandbox Code Playgroud)
并保持定义与C文件中的初始化.这与C标准的含义相同.
对于POSIX,使用静态存储初始化互斥锁非常重要.所以这个定义不能存在于.h文件中.