WIN32多线程编程( CreateThread 版本)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-23 01:10   11   0
WIN32多线程编程( CreateThread 版本

一、线程的创建、运行与结束

示例代码:
#include <stdio.h>
#include <windows.h>

DWORD WINAPI ThreadFun(LPVOID pM)
{
     printf("%s\n", pM);
     return 0;
}

int main()
{
     printf("main thread\n");
     HANDLE handle1 = CreateThread(NULL, 0, ThreadFun, "Thread one", 0, NULL);
     HANDLE handle2 = CreateThread(NULL, 0, ThreadFun, "Thread two", 0, NULL);

     DWORD exitCode1 = 0, exitCode2 = 0;
     while(1){
          GetExitCodeThread(handle1, &exitCode1);
          GetExitCodeThread(handle2, &exitCode2);
          if(exitCode1 != STILL_ACTIVE && exitCode2 != STILL_ACTIVE)
               break;
     }

     CloseHandle(handle1);
     CloseHandle(handle2);
     system("PAUSE");
     return 0;
}

解析:
1、CreateThread 包含在 windows.h 头文件中;
2、线程函数为 DWORD WINAPI (*ThreadFun)(LPVOID pM ) 类型,一个线程函数可以被多个线程调用;
3、线程创建函数为CreateThread( ),其具体参数如下:
HANDLE CreateThread ( // 返回线程句柄
LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全设置,一般设为NULL以使用默认安全性
SIZE_T dwStackSize, // 初始栈大小( 堆是公用的 栈是私有的),设为0表示使用系统默认的大小(即和主线程的栈大小相同),使用过程中若空间不足系统则会自动给其分配
LPTHREAD_START_ROUTINE lpStartAddress,
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛