Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在相互依赖的C文件中定义pthread和mutex锁?_C_Multithreading_Pthreads_Mutex - Fatal编程技术网

如何在相互依赖的C文件中定义pthread和mutex锁?

如何在相互依赖的C文件中定义pthread和mutex锁?,c,multithreading,pthreads,mutex,C,Multithreading,Pthreads,Mutex,我不熟悉pthread和互斥锁。我以前使用过它们,但是在一个文件中(创建线程和锁的main.c与使用锁的函数和内存在同一个文件中)。如何在相互依赖的C文件中定义互斥锁?理想情况下,我不希望改变目前的结构 main.c // create threads, include `file1.h` file1.h file1.c // include `file1.h` and `lib.h`, extern a memory defined in `lib.c` lib.h lib.c

我不熟悉pthread和互斥锁。我以前使用过它们,但是在一个文件中(创建线程和锁的main.c与使用锁的函数和内存在同一个文件中)。如何在相互依赖的C文件中定义互斥锁?理想情况下,我不希望改变目前的结构

main.c   // create threads, include `file1.h`
file1.h  
file1.c  // include `file1.h` and `lib.h`, extern a memory defined in `lib.c`
lib.h  
lib.c   // include `lib.h`, contain functions that malloc and dealloc memory, which need to be accessed by many threads  

您需要在一个
.c
文件中定义互斥体:

pthread_mutex_t mux;
extern pthread_mutex_t mux;
然后您需要在一个
.h
文件中向前声明它:

pthread_mutex_t mux;
extern pthread_mutex_t mux;

通常的惯例是,您在与
.c
文件相对应的
.h
文件中提出了向前声明,但没有理由不能将其放在不同的
.h
文件中;您只需记住要包含的
.h
。确保包含定义变量的
.h
文件以及使用该变量的所有地方。

中定义的互斥体是哪个文件?我添加了一个main.h,并在那里定义了互斥体。我认为lib.c可以导入main.h并使用它。行吗?