在Linux中,實現類似windows系列的mutex |
|
rexchiu
中階會員 ![]() ![]() ![]() 發表:14 回覆:88 積分:70 註冊:2002-03-17 發送簡訊給我 |
在Linux中,實現類似windows系列的mutex,以確保同一時間只有一份程式在執行!
我用semaphore來實作的,因為自己專案中有這樣的需求.可是不知道這樣的做法
好不好.
semun.h
#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED) /* union semun is defined by includingsema.c #includeBest Regards, Rex Chiu
------
Best Regards, Rex Chiu |
seaturn99
版主 ![]() ![]() ![]() ![]() 發表:69 回覆:427 積分:214 註冊:2003-08-25 發送簡訊給我 |
rexchiu 兄您好: 感謝您無私的貢獻,補充一些資訊 : Mutex 其實就是 sem resource 個數 = 1 ..
另一個可以保護 Global 資源,達到同步化目的方法為 spin lock .. 兩者使用上還是有些差異, sem 會使 waiting 的 porcess 或 thread 進入排程器排程, spin lock 則進入 busy loop .. 視不同等待資源時間的長短與頻率,選擇兩個之一的鎖定方法,可以提升程式效率,尤其在 Kernel Mode (Ex : Device Driver 中)更是明顯... ----
我只會兩件事,這也不會,那也不會 眼見不一定為真
----
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |