IOCP一些学习

ON_EN_CHANGE(IDC_CONTENT, &CClientDlg::OnEnChangeContent)

1.数据的解析属于业务层的逻辑,不要放到网络层来

2.CRITICAL_SECTION / MUTEXT 封装时注意把拷贝构造函数和复制构造函数私有化

private:
CCriSec(const CCriSec& cs);
CCriSec operator = (const CCriSec& cs);

3.将各种同步对象封装并留出相同的接口,这种方式以前没用过

template<class CLockObj> class CLocalLock
{
public:
CLocalLock(CLockObj& obj) : m_lock(obj) {m_lock.Lock();}
~CLocalLock() {m_lock.Unlock();}
private:
CLockObj& m_lock;
};


typedef CLocalLock<CCriSec> CCriSecLock;
typedef CLocalLock<CCriSec2> CCriSecLock2;
typedef CLocalLock<CMTX> CMutexLock;


以此来实现同步成员变量的局部适配

CCriSecLock locallock(m_scBuffer);


4. 这种格式看着挺规范的

LPFN_ACCEPTEX Get_AcceptEx_FuncPtr (SOCKET sock);


5.客户端SOCKET,初始状态设为STOPPED,创建中STARTING,创建后STARTED

在处理线程里面

while( state == STARTED)

{

}


6.通过接口向外传递数据时,SOCKET以一个DWORD为标记传出去,不要直接传SOCKET

你可能感兴趣的:(IOCP一些学习)