实现Windows 多线程的最简编码.docVIP

  • 2
  • 0
  • 约1.28千字
  • 约 2页
  • 2019-10-16 发布于江西
  • 举报
实现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); ????couthi! ; ??} ??//一旦返回,这个线程就结束了。 ??return 0; } DWORD WINAPI MTTwo(LPVOID param){ ??while(true) ??{ ????Sleep(1000); ????coutjoy! ; ??} ??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){ ????cininp; ????if(inp==1) //运行线程 ????{ ??????ResumeThread(hand); ??????ResumeThread(hand2); ????} ????else //暂停线程 ????{ ??????SuspendThread(hand); ?????SuspendThread(hand2); ????} ??}; ??//终止线程 ??TerminateThread(hand,1); ??TerminateThread(hand2,1); ??return 0; } 好了,已经可以编译运行了: ????已经可以看到,输入了“1”之后,线程开始执行了。由于操作系统给线程分配时间的“随机性”,两个线程输出的句子会互相“打断”。然后输入“2”,线程就暂停了。

文档评论(0)

1亿VIP精品文档

相关文档