多執行緒的資料共享保護案例

2021-09-26 14:52:28 字數 1002 閱讀 2413

假設有乙個網路遊戲伺服器,建立了兩個執行緒:

乙個執行緒收集玩家命令(數字表示),並把命令資料寫到佇列中;

取出佇列中玩家傳送的命令並進行解析,最後執行玩家需要的動作。

// 用成員函式作為執行緒函式

class a

} bool isoutmsgrecvqueue

(int

& command)

m_mutex.

unlock()

;return false;

}// 出隊操作

void

outmsgrecvqueue()

else

} cout <<

"end"

<< endl;

}private:

std:

:list<

int> msgrecvqueue;

// 儲存玩家傳送的命令

std:

:mutex m_mutex;};

intmain()

lock_guard類模板在函式或程式段結束是會在析構函式中呼叫unlock()來解鎖,所以當任務很多的時候新增是一種及時解鎖的方法。

// 用成員函式作為執行緒函式

class a

} bool isoutmsgrecvqueue

(int

& command)

return false;

}// 出隊操作

void

outmsgrecvqueue()

else

} cout <<

"end"

<< endl;

}private:

std:

:list<

int> msgrecvqueue;

// 儲存玩家傳送的命令

std:

:mutex m_mutex;

};

多執行緒共享資源案例

最近研究了一下多執行緒,主要針對於多執行緒共享同一資源,和多執行緒執行各自的資源 其實主要要就是搞清楚資源的含義 你要操作什麼,什麼就是執行緒的資源!1.先說一下多執行緒執行各自的資源 執行各自的資源從字面意思就可以看出來執行緒執行的資源互不干涉,各自執行各自的。案例如下 package testt...

多執行緒 資料共享

package thread 需求 簡單的買票程式 需多個視窗同時買票,實現資料共享 實現方式和繼承方式有什麼區別?實現方式避免了單繼承的侷限性。具體步驟 1.定義類實現runnable介面 2.覆蓋runnable介面中的run方法 3.通過thread類建立執行緒物件 4.將runnable介面...

初學多執行緒(一) 保護共享資源

1.共享資源未被保護,被多個執行緒並行訪問,會發生資源分配上的衝突,兩種方法保護共享資源 ps 共享資源像靜態類中的字段,方法 how to protect shared resources from concurrent access?1.使用 interlocked.increment 字段 在...