2011-04-26 227 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