求大神解救.请详细回答,分数多多.解决方法
求大神解救...请详细回答,分数多多...
------解决方案--------------------
首先,如果你不懂,临界区这些东西的话,建议去看windows核心编程中,看下线程间的同步。最后套接字,其实只是一个标识。
- C/C++ code
/************************************************************************************** 这个是一个结构图...'||'为一个等号... 问题在下面结构图中...求解答... 另一个问题就是:CRITICAL_SECTION这个是什么? InitializeCriticalSection() //这个函数初始化一个临界区,有什么作用 EnterCriticalSection() //按顺序访问,访问的是线程还是什么东西? LeaveCriticalSection() //是否为EnterCriticalSection的退出???? **************************************************************************************/ 线程对象结构: typedef struc_THREAD_OBJ { HANDLE events[WSA_MAXIMUM_WAIT_EVENTS]; //记录当前线程要等待的事件对象句柄 int nSocketCount; //记录当前线程处理的套接字数量 PSOCKET_OBJ pSockHeader; //当前线程处理套接字对象列表,pSockHeader指向表头 POSCKET_OBJ pSocketTail; //pSockTail指向表位 CRITICAL_SECTION cs; //关键代码段变量,为的是同步对本结构的访问 _THREAD_OBJ *pNext; //指向下一个THREAD_OBJ对象,为的是连成一个表 }THREAD_OBJ, *PTHREAD_OBJ; 套接字对象: typedef struct_SOCKET_OBJ { SOCKET s; //套接字句柄 HANDLE event; //与此套接字相关的事件对象句柄 sockaddr_in addrRemote; //客户端地址信息 _SOCKET_OBJ *pNex; //指向下一个SOCKET_OBJ对象,以连成一个表 }SOCKET_OBJ, *PSOCKET_OBJ; --------------------------------------------------- (线程对象) | nCount个 | ---------------- --------------------------- | wEvent | -> | wEvent[0] | wEvent[1] | wEvent[2] | ....... | ---------------- --------------------------- | nCout | || || (套接字对象) || || //问题: 这两个东西这么相等??? ---------------- ---------- ---------- ---------- ...... | pHead | | socket | | socket | | socket | ...... ---------------- ---------- ---------- ---------- ...... | pEnd | | event | | event | | event | ...... ---------------- ---------- ---------- ---------- ...... | *pNext | | addr | | addr | | addr | ...... ---------------- ---------- ---------- ---------- ...... 指 / | *pNext | | *pNext | | *pNext | ...... 向 / ---------- ---------- ---------- / | nCount个 | ---------------- --------------------------- | wEvent | -> | wEvent[0] | wEvent[1] | wEvent[2] | ....... | ---------------- --------------------------- | nCout | || || || || ---------------- ---------- ---------- ---------- ...... | pHead | | socket | | socket | | socket | ...... ---------------- ---------- ---------- ---------- ...... | pEnd | | event | | event | | event | ...... ---------------- ---------- ---------- ---------- ...... | *pNext | | addr | | addr | | addr | ...... ---------------- ---------- ---------- ---------- ...... 指向 / | *pNext | | *pNext | | *pNext | ...... / ---------- ---------- ----------
------解决方案--------------------
首先,如果你不懂,临界区这些东西的话,建议去看windows核心编程中,看下线程间的同步。最后套接字,其实只是一个标识。