2011-04-26 181 views
3

如何在模块之间使用互斥体?在模块之间共享互斥体

我有一个模块,创建从另一个模块运行功能的线程。

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

例如逻辑模块产生2个线程,每个线程运行另一个模块的功能。有一个称为当前位置的变量,需要从逻辑模块读取,例如,另一个模块调用getCurrentPosition。这些逻辑模块外部的线程函数如何使用逻辑模块中定义的互斥量?

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

回答

2

您可以像使用extern变量“当前位置”声明一样使用互斥锁。这里没有太大区别。

extern pthread_mutex_t mtx; 
extern int current_position; 
0

互斥锁通常与指向互斥对象的指针一起使用。所以,你必须将指针传递给两个模块中的同一个对象,然后像往常一样使用互斥锁。

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