2010-09-09 36 views
2

爲什麼需要一個互斥對象,其中Acquire和Release方法只返回0?爲什麼需要一個空互斥量?

我學習的ACE框架,它有一個Null_Mutex類,我想知道它是如何來使用。

class Null_Mutex 
{ 
public: 
Null_Mutex (void) {} 
˜Null_Mutex (void) {} 
int remove (void) { return 0; } 
int acquire (void) const { return 0; } 
int try_acquire (void) const { return 0; } 
int release (void) const { return 0; } 
}; 
+2

請加入更多內容。 – leppie 2010-09-09 07:39:02

回答

4

它是空對象模式:你可以通過它的代碼需要互斥時,你並不需要實際的互斥邏輯。

+0

你能舉一個例子嗎? – 2010-09-09 07:53:34

+2

+1。 @Tony:例如,你可能只想在一個線程上運行你的代碼,然後使用真正的互斥鎖就不需要了,但是會帶來很大的開銷。使用空互斥量你不需要重寫所有的代碼 - 你只需要傳遞一個空的互斥量,代碼很樂意「使用」它,而且你沒有開銷。 – sharptooth 2010-09-09 09:56:23

+0

除了一個事實,即提取出你的互斥這樣的,並呼籲通過間接調用(函數指針)的所有方法花費很多不是直接調用更多的互斥鎖和解鎖功能... – 2012-02-01 02:29:22

相關問題