2013-08-02 48 views
0

我有一個靜態的std ::地圖變了一個基類,類似如下:C++ - 寫入來自不同對象的靜態變量需要互斥鎖?

class base 
    { 
    public : static std::map <int, int> my_statistics; 
    } 

我有一個派生類讀取,更新,寫入該靜態變量。由於這個派生類在運行時由不同的進程實例化,我不確定它們是否是順序的。我想知道每次讀取(讀取器鎖定)或寫入(寫入器鎖定)時,是否需要在靜態變量上使用mutex_lock。

在此先感謝。

編輯:它不是實例化這個類的過程,而是實例化這個類的不同對象。所以,我想知道寫入(或讀取)靜態變量的不同對象是否安全。

回答

0

不同的進程不能共享同一個對象實例,所以你的問題沒有意義。 「靜態」只有在過程中才有意義。如果你想讓不同的進程訪問相同的內存,你應該使用共享內存。

新回答您的編輯:

如果你的過程是不是多線程的,那麼你就需要保護。如果有幾個線程讀/寫靜態變量,那麼你需要保護它。

+0

請參閱編輯..對不起..我的錯誤.. – 302Found

+0

如果你的過程不是多線程,那麼你不需要保護。如果有幾個線程讀/寫靜態變量,那麼你需要保護它。 – TieDad