求大神解救...请详细回答,分数多多...
- 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核心编程中,看下线程间的同步。最后套接字,其实只是一个标识。