只会线程的创建和退出还是不够的,一些基本操作也得会......
创建两个线程。创建时,一个运行一个挂起。然后唤醒挂起的,挂起运行的。运行一段时间后,终止运行的,唤醒挂起的 哈 听上去挺乱,还是看程序简单......
#include<stdio.h> #include<windows.h> DWORD WINAPI ThreadProc(LPVOID lpParam) { LPDWORD pData; DWORD i=0; pData=(LPDWORD)lpParam; for(i;i<10;i++) { Sleep(100); printf("TID = %u ,\t Parameters = %u\t i = %u\n", GetCurrentThreadId(),*pData,i); } ExitThread(i); return 0; } void main() { DWORD dwData1; DWORD dwData2; DWORD dwThreadId[2]; HANDLE hThread[2]; dwData1=1; hThread[0] = CreateThread( NULL,0, ThreadProc,&dwData1, CREATE_SUSPENDED, &dwThreadId[0]); if(hThread[0] == NULL) { ExitProcess(0); } dwData2 = 2; hThread[1]=CreateThread( NULL,0, ThreadProc,&dwData2, 0, &dwThreadId[1]); if(hThread[1] == NULL) { ExitProcess(1); } Sleep(200); //启动0 ResumeThread(hThread[0]); //挂起1 SuspendThread(hThread[1]); //正好500会造成少输出一次 Sleep(510); //输出五次就停止 TerminateThread(hThread[0],0); //启动1 ResumeThread(hThread[1]); WaitForMultipleObjects(2,hThread,TRUE,INFINITE); CloseHandle(hThread[0]); CloseHandle(hThread[1]); }
输出结果:
TID = 2752 , Parameters = 2 i = 0 --注意,这里只运行一次 TID = 4872 , Parameters = 1 i = 0 TID = 4872 , Parameters = 1 i = 1 TID = 4872 , Parameters = 1 i = 2 TID = 4872 , Parameters = 1 i = 3 TID = 4872 , Parameters = 1 i = 4 TID = 2752 , Parameters = 2 i = 1 TID = 2752 , Parameters = 2 i = 2 TID = 2752 , Parameters = 2 i = 3 TID = 2752 , Parameters = 2 i = 4 TID = 2752 , Parameters = 2 i = 5 TID = 2752 , Parameters = 2 i = 6 TID = 2752 , Parameters = 2 i = 7 TID = 2752 , Parameters = 2 i = 8 TID = 2752 , Parameters = 2 i = 9
本篇博客出自
阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/7084488