在模块之间共享互斥锁

时间:2011-04-26 12:51:43

标签: c mutex

如何在模块之间使用互斥锁?

我有一个模块,可以创建从另一个模块运行函数的线程。

我需要在线程创建模块中读取一个变量,而从其他#included模块执行函数的线程会修改该变量。如何在这样的系统中锁定和解锁互斥锁?

e.g。逻辑模块产生2个线程,每个线程从另一个模块运行一个函数。如果需要,可以从逻辑模块中读取一个称为当前位置的变量。另一个模块调用getCurrentPosition。如何在逻辑模块外部存在的这些线程函​​数使用逻辑模块中定义的互斥锁?

线程运行函数需要锁定和解锁逻辑模块中定义的互斥锁。

2 个答案:

答案 0 :(得分:3)

您可以像声明和使用外部变量“当前位置”一样使用互斥锁。这里没什么大不同。

extern pthread_mutex_t mtx;
extern int current_position;

答案 1 :(得分:0)

Mutex通常与指向互斥对象的指针一起使用。因此,您必须将指向同一对象的指针传递到两个模块中,然后您可以像往常一样使用互斥锁。

您可以将extern mutex_type mutex1;互斥锁指针声明添加到两个模块共有的头文件中,但在mutex_type mutex1;的一个模块中定义它。然后,您可以在两个模块中使用&mutex1