实现Windows 多线程的最简编码 下载:源码 可执行文件 多线程是Windows 开发者不可回避的内容。但是对于初学者,上百行的实例代码是很不容易学习的,而且其中很多无关线程的编码也影响了我们的视线。这里我整理出来一个最简单的实现多线程的代码(这个程序将创建2个新的线程,每个线程都向控制台窗口输出一句话,如果在控制台输入数字“1”就开始线程,其它的输入就暂停线程。): 新建一个Console 工程; 修改stdafx.h 头文件,使之包含下面的内容:#include <windows.h> //使用多线程必须的 #include <iostream> //这是观看效果用的using namespace std; 然后是主文件的main 函数的改造: 首先在主文件main 函数的外部声明2个函数,给多线程调用。DWORD WINAPI MTOne(LPVOID param); DWORD WINAPI MTTwo(LPVOID param); 线程函数的实现如下:DWORD WINAPI MTOne(LPVOID param){ while(true) { Sleep(1000); cout<<"hi! "; } //一旦返回,这个线程就结束了。 return 0;} DWORD WINAPI MTTwo(LPVOID param){ while(true) { Sleep(1000); cout<<"joy! "; } return 0;} 然后在main 函数里面创建线程和控制线程的循环:int main(int argc, char* argv[]){ int inp=0; HANDLE hand=CreateThread (NULL, 0, MTOne, (void*)&inp, CREATE_SUSPENDED, NULL); HANDLE hand2=CreateThread (NULL, 0, MTTwo, (void*)&inp, CREATE_SUSPENDED, NULL); while(true){ cin>>inp; if(inp==1) //运行线程 { ResumeThread(hand); ResumeThread(hand2); } else //暂停线程 { SuspendThread(hand); SuspendThread(hand2); } }; //终止线程 TerminateThread(hand,1); TerminateThread(hand2,1); return 0;} 好了,已经可以编译运行了: 已经可以看到,输入了“1”之后,线程开始执行了。由于操作系统给线程分配时间的“随机性”,两个线程输出的句子会互相“打断”。然后输入“2”,线程就暂停了。

评论