目錄
UdpServer:
觀察者模式:
remove_if算法
管道補充:?
文件的標準輸出 ,標準輸入,標準錯誤
UdpServer:
數據接收模塊關心Adduser?和Deleuser?兩個模塊
線程池關心Route模塊
將這三個方法注冊進服務器 ,但是有臨界區問題(線程池與數據接受模塊可能同時訪問用戶管理模塊,所以要加鎖)
在線程池中 ,傳遞的任務既可以是自定義的類 ,也可以是設置進來的一個一個的函數對象
將Route注冊進UdpServer中后 ,在UdpServer中綁定參數形成任務 ,加到線程池中.
觀察者模式:
觀察者模式(Observer Pattern)是一種行為設計模式,它定義了對象之間的一對多依賴關系,當一個對象狀態發生改變時,所有依賴它的對象(稱為"觀察者")都會自動收到通知并更新。
觀察者模式:?每一個用戶都相當于一個觀察者 ,作為一個觀察者 ,將自己加入到在線用戶列表中 ,當某件事發生后 ,需要通知所有觀察者.
不想讓服務器被拷貝 ,繼承nocopy即可
class nocopy
{
public:
nocopy(){}
nocopy(const nocopy &) = delete;
const nocopy& operator = (const nocopy &) = delete;
~nocopy(){}
};class UdpServer : public nocopy
{};
remove_if算法
管道補充:?
當管道讀寫兩端同時打開時 ,才會繼續向后運行 ,否則會發生阻塞.
文件的標準輸出 ,標準輸入,標準錯誤
文件描述符 0 1 2?代表標準輸入?標準輸出?標準錯誤??
其中標準輸出和標準錯誤都是在顯示器中顯示?
既然都在顯示器中打印 , 為什么會有標準輸出和標準錯誤兩種呢?
答:?可以通過重定向?讓標準輸出?和標準錯誤分別打印到不同地方 ,方便DEBUG
./UdpServer 8080 1>log1.txt 2>log2.err
執行UdpServer 將標準輸出和標準輸入都打印到一起的方法1.覆蓋log.txt模式
./UdpServer 8080 > log.txt 2>&12.追加log.txt模式
./UdpServer 8080 >> log.txt 2>&1