《windows核心编程》读后编码--创建线程

来源:互联网 发布:网络神作小说 知乎 编辑:程序博客网 时间:2024/05/22 06:30

// 多线程处女篇--创建线程.cpp : 定义控制台应用程序的入口点。
//VS2010上编译通过

#include "stdafx.h"
#include <Windows.h>//for call CreateThread
#include <cstdlib>//for call system("pause")
#include<iostream>
using namespace std;

DWORD WINAPI ChildThreadFunc(LPVOID lpParam);
int _tmain(int argc, _TCHAR* argv[])
{
 cout<<"操作系统正在动态分配ID"<<endl;
 cout<<"当前线程(主线程)的ID为:"<<GetCurrentThreadId()<<endl;

 HANDLE handle = CreateThread(NULL, 0, ChildThreadFunc, NULL, 0, NULL);
 DWORD l_dwWaitResult;
 l_dwWaitResult=WaitForSingleObject(handle, INFINITE); //等待函数,此函数等待线程handle标识的内核对象触发(线程执行结束时管理该线程的内核对象才被触发)INFINITE标志无限等待(该参数代表应等待的时间(毫秒级))

 BOOL gb_CheckResult=FALSE;
 switch (l_dwWaitResult)
 {
 case WAIT_OBJECT_0:
  {
   cout<<"等待函数执行成功!(已经触发)"<<endl;
   gb_CheckResult=TRUE;
   break;
  }
 case WAIT_TIMEOUT:
  {
   cout<<"等待函数过时!(未触发)"<<endl;
   break;
  }
 case WAIT_FAILED:
  {
   cout<<"等待函数执行失败!(未触发)"<<endl;
   break;
  }
 }
 if (gb_CheckResult)
 {
  cout<<"子线程执行结束"<<endl;
 }
 
 cout<<"当前线程(主线程)的ID为:"<<GetCurrentThreadId()<<endl;
 CloseHandle(handle);//我们现在对该线程没兴趣了,就要关闭内核对象句柄
 system("pause");
 return 0;
}


DWORD WINAPI ChildThreadFunc(LPVOID lpParam)
{
  cout<<"ID号为:"<<GetCurrentThreadId()<<"线程进入"<<endl;
  return 0;
}

 

原创粉丝点击