C++拾遗--多线程:C语言多线程的引入

本文介绍了C语言中如何使用多线程,包括CreateThread、_beginthreadex和_beginthread的使用方法,以及多线程编程可能面临的问题,如线程冲突和同步问题。
摘要由CSDN通过智能技术生成

                      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(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值