C++拾遗--多线程:C语言多线程的引入
前言
多线程是编程中的一个重要内容。多核时代使多线程成为一种可能,显然,一件事情多个人干,效率一定会提升。下面来看下C语言中是如何使用多线程的。
正文
1.CreateThread
先来看一个实例
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <Windows.h>
DWORD WINAPI run(void *p)
{
char *mess = (char*)p;
printf("线程%d,弹窗\n", GetCurrentThreadId());
char threadId[20];
sprintf(threadId, "线程%d", GetCurrentThreadId());
MessageBoxA(0, mess, threadId, 0);
return 0;
}
int main(void)
{
printf("******C语言多线程演示***by David***\n");
char *mess[] = { "123", "456", "789" };
HANDLE handles[3];
for (int i = 0; i < sizeof(mess) / sizeof(*mess); i++)
{
handles[i] = CreateThread(NULL, 0, run, mess[i], 0, NULL);
}
WaitForMultipleObjects(3, handles, 1, INFINITE);
return 0;
}
运行
异步弹出了三个窗口,并打印了各自的线程号。若是有没看懂的地方,下面有详细解释:
1.handle是句柄,在windows中用句柄来标识对象。本质很简单 typedef void * HANDLE;
2.CreateThread()用来创建线程。原型
HANDLE WINAPI CreateThread(