如何在模块之间使用互斥锁?
我有一个模块,可以创建从另一个模块运行函数的线程。
我需要在线程创建模块中读取一个变量,而从其他#included模块执行函数的线程会修改该变量。如何在这样的系统中锁定和解锁互斥锁?
e.g。逻辑模块产生2个线程,每个线程从另一个模块运行一个函数。如果需要,可以从逻辑模块中读取一个称为当前位置的变量。另一个模块调用getCurrentPosition。如何在逻辑模块外部存在的这些线程函数使用逻辑模块中定义的互斥锁?
线程运行函数需要锁定和解锁逻辑模块中定义的互斥锁。
答案 0 :(得分:3)
您可以像声明和使用外部变量“当前位置”一样使用互斥锁。这里没什么大不同。
extern pthread_mutex_t mtx;
extern int current_position;
答案 1 :(得分:0)
Mutex通常与指向互斥对象的指针一起使用。因此,您必须将指向同一对象的指针传递到两个模块中,然后您可以像往常一样使用互斥锁。
您可以将extern mutex_type mutex1;
互斥锁指针声明添加到两个模块共有的头文件中,但在mutex_type mutex1;
的一个模块中定义它。然后,您可以在两个模块中使用&mutex1
。