線程的創建
線程的關閉
static HANDLE thread_exit = CreateEvent(NULL, TRUE, FALSE, NULL); // 原子量,用於控制線程結束
線程函數裏面的寫法:
static DWORD WINAPI recvFrom(PVOID psock) {
CSocket *socks = (CSocket*)psock;
//MessageBox(NULL, _T("test"), NULL, NULL);
while (WaitForSingleObject(thread_exit, 0) != WAIT_OBJECT_0) {
char buf[256] = { 0 };
socks->Recvfrom(buf);
printf("%s\n", buf);
if (!socks->getRecvList()->find(buf)) {
Node *tmp = new Node(&socks->getClient_addr(), buf, NULL);
//WaitForSingleObject(Mutex, 500);
socks->getRecvList()->push(tmp);
//ReleaseMutex(Mutex);
Sleep(1000);
}
//std::cout << (messages->empty() ? "空" : "不空") << std::endl;
//Sleep(1000);
}
return 0;
}
while (WaitForSingleObject(thread_exit, 0) != WAIT_OBJECT_0) {
if (WaitForSingleObject(thread, 100) == WAIT_TIMEOUT) {
TerminateThread(thread, 0);
}