所以我有這樣如何將linc傳遞給類函數並調用它?
class mySafeData
{
public:
void Set(int i)
{
myMutex.lock();
myData = i;
myMutex.unlock();
}
void Get(int& i)
{
myMutex.lock();
i = myData;
myMutex.unlock();
}
private:
int myData;
boost::mutex myMutex;
};
它的實例類運行。讓我們調用實例A.我想創建一個新類,它將啓動參數作爲某種到A的Getter的鏈接,並且能夠以某種方式保存到該getter的鏈接,以便在它需要的私有方法內調用它。如何做這樣的事情?
互斥鎖的加鎖和解鎖是*手動管理資源*,這是我們在C++中無法做到的。你應該使用Boost所做的SBRM(RAII)技術,而不是這樣做:「void Set(int i){boost :: mutex :: scoped_lock lock(myMutex); myData = i}'。現在,一旦被鎖定,互斥量將被保證自動解鎖*不管是什麼*。一般來說它更乾淨。 (很明顯,在'Get'中做同樣的事情,對於在int上運行的東西,這不會產生太大的區別(只是可讀性),但鎖和解鎖之間的語句可以拋出異常,這很關鍵。 – GManNickG
你的'Get'函數返回的原因是什麼?這非常非正統,我懷疑這是因爲你在返回之後不知道如何「解鎖」互斥體,如果你在上面的評論中做了我所說的話,就像我說的你可以回覆得很好,靜音解鎖自己,你會想要這樣做:) – GManNickG
好的,我想你可能是指'get'函數,當你說,「連接到A的Getter」,但是當你說你想打電話給A的私處,你完全失去了我。 –