|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
關於全局對像和多線程?
多線程程序只是利用全局對像對全局對像中的成員變量的讀取操作,會不會產生問題? |
關於全局對像和多線程?
如果只是讀取的話,拿應該是沒有問題的。 |
關於全局對像和多線程?
嗯,不寫就行
否則需要同步鎖 |
關於全局對像和多線程?
多線程必定會使用到寫的部分,不然的話用多線程也沒有什麼太大意義,建議你學會使用同步鎖進行處理 |
關於全局對像和多線程?
加上讀寫鎖,什麼都OK,不過是在不是很要求速度的前提先。 |
關於全局對像和多線程?
是這樣的,服務器(多線程的)發送命令給客戶端,客戶端需要回應,因此,需要用到多線程和同步,所有的發送信息存儲到一個全局數據段中,在等到客戶端回應後,將相關信息刪除,在一段時間內,沒有回應則服務器重新發送。
有什麼辦法可以不用同步鎖嗎? |
關於全局對像和多線程?
如果你的設計中不會有兩個線程同時改變某個資源
那麼就不用
如果同時改變,
那麼要使用 |
關於全局對像和多線程?
下面是一個靜態的全局對像:
如果在多線程中利用Modify函數操作改對像中的m_StatusArr成員變量,是否在Modify函數中進行鎖定,還是在多線程中對該靜態的全局變量進行鎖定?
class single
{
public:
~single();
int Init();
int Release();
int Modify(Status status);
static single* Instance();
protected:
CDevice_Manager();
private:
CCriticalSection m_listManipulationSection; //鎖
static single* _instance;
StatusArr m_StatusArr;
}; |
關於全局對像和多線程?
如果會同時調用的話就鎖定
兩種鎖定都可以
但是
在notify中鎖定比較好一點
因為以後代碼的管理比較方便 |
關於全局對像和多線程?
最好是在類成員函數中進行鎖定修改,然後接鎖,這樣操作的粒度小,性能好 |
| |