今天主要学的是日了狗一般的线程控制
1 创建一个新的线程
2 挂起或唤醒某一个进程
3 终止一个进程
每一个线程内部必须要有最少一个线程
每个线程必须要有一个入口函数 这个入口函数是回调函数 必须要__stdcall
使用CreareThread创建一个进程
有6个参数分别是
安全属性 堆栈大小 入口函数 传给入口函数的参数 创建进程后是否立即启动 分配的ID号
然后线程启动之后你就不用管它了
可以用WaitForSingleObject来等待它运行结束
使用SuspendThread挂起一个线程 ResumeThread唤醒一个线程
非常好理解。。。
当线程函数运行完毕之后一个线程会自然被终止
可以用TerminateThread强行结束一个线程
但是不推荐 强行结束会什么也不管直接关 有可能造成内存泄露
今天困得一B就是这样。。。。
#include<iostream> #include<windows.h> using namespace std; HANDLE MyThread; HANDLE ThreadKiller; DWORD MyThreadId,temp; DWORD WINAPI MyThreadProc(LPVOID lpParam) { Sleep(100); cout<<"LTY你真是屌"<<endl; Sleep(300); cout<<"66666666"<<endl; return 0; } DWORD WINAPI KillerProc(LPVOID lpParam) { TerminateThread(MyThread,0); cout<<"闭嘴吧你"<<endl; return 0; } int main() { MyThread=::CreateThread(NULL,NULL,MyThreadProc,NULL,0,&MyThreadId); cout<<"My thread has benn created.The id= "<<MyThreadId<<endl; ::WaitForSingleObject(MyThread,INFINITE); MyThread=::CreateThread(NULL,NULL,MyThreadProc,NULL,0,&MyThreadId); Sleep(150); SuspendThread(MyThread); cout<<"一点都不屌"<<endl; cout<<"扯淡!"<<endl; ResumeThread(MyThread); ::WaitForSingleObject(MyThread,INFINITE); MyThread=::CreateThread(NULL,NULL,MyThreadProc,NULL,0,&MyThreadId); Sleep(200); ThreadKiller=::CreateThread(NULL,NULL,KillerProc,NULL,0,&temp); ::WaitForSingleObject(ThreadKiller,INFINITE); ::CloseHandle(ThreadKiller); ::CloseHandle(MyThread); return 0; }
honey,how are you