一个基于C++的多线程编程实例(CreateThread函数)
本博客主要总结了基于C++的多线程函数CreateThread,互斥锁(或者称资源独占)函数CreateMutex,等待资源函数WaitForSingleObject,关闭线程函数(其实是关闭线程的句柄)CloseHanlde,释放互斥锁函数ReleaseMutex的用法实例,具体的程序用法和解释如下文所示:
一、基于CreateThread函数的多线程程序
1.1程序的功能是:主线程每隔1s输出一句字符串,然后支线程每隔2s输出一句字符串,主线程和支线程分别交替输出一句字符串,实现代码如下所示.
1.2具体实现代码:
#include <iostream>
#include <Windows.h>
using namespace std;
HANDLE hMutex;
DWORD
WINAPI Fun(LPVOID)//创建多线程函数,函数返回值为DWORD WINAPI,一定要是这个,否则会出错
{
while(true)
{
WaitForSingleObject(hMutex, INFINITE);//获取等待资源,一直等待,知道获取"screen"资源后,才返回
cout << "支线程1" << endl;
Sleep(2000);
ReleaseMutex(hMutex);//释放资源独占函数
}
}
int main()
{
HANDLEhandle1 = CreateThread(NULL, 0, Fun,NULL, 0,NULL);//创建多线程
hMutex = CreateMutex(NULL,FALSE,"screen");//创建资源独占函数CreateMutex,该函数的功能是独占一个资源或者线程
CloseHandle(handle1);//释放线程
while(true)
{
WaitForSingleObject(hMutex, INFINITE);//获取等待资源,一直等待,知道获取"screen"资源后,才返回
cout << "主线程1" << endl;
Sleep(1000);
ReleaseMutex(hMutex);//释放资源独占函数
}
return0;
}
二、程序运行结果如下所示:
图1 程序运行结果
如图1所示,主线程和支线程分别交替输出一句字符串,其中主线程输出字符串为"主线程1",支线程输出字符串为"支线程1"。
参考内容:
http://www.jizhuomi.com/software/287.html
---------------------
作者:净无邪
来源:CSDN
原文:https://blog.csdn.net/naibozhuan3744/article/details/78746292
版权声明:本文为博主原创文章,转载请附上博文链接!
一个基于C++的多线程编程实例(CreateThread函数)相关推荐
- linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解
linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...
- C#多线程编程实例 线程与窗体交互
C#多线程编程实例 线程与窗体交互 代码: public partial class Form1 : Form{//声明线程数组Thread[] workThreads = new Thread[10 ...
- C#中Socket多线程编程实例
C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...
- C# Socket多线程编程实例
C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...
- [转]C#多线程编程实例实战
单个写入程序/多个阅读程序在.Net类库中其实已经提供了实现,即System.Threading.ReaderWriterLock类.本文通过对常见的单个写入/多个阅读程序的分析来探索c#的多线程编程 ...
- Linux多线程编程实例解析
Linux系统下的多线程遵循POSIX线程接口,称为 pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a.顺便说一下,Linux ...
- mfc多线程编程实例_多线程技术的PLC与PC的通讯方式
点击箭头处"工业之家",选择"关注公众号"! 基于多线程技术的PLC与PC的通讯方式 1.系统构成 推进系统中,PC机选用工控计算机.它是整个控制系统的核心, ...
- python多核多线程编程实例_Python多线程
多线程基础概念 并行与并发并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允许程 ...
- 基于TCP的Socket编程实例
1.Socket通常称为套接字,应用程序通常通过套接字像网络发送请求或者应答网络请求 2.本文给出了一个服务端与客户端交流的实例代码,可以实现循环交流,代码如下 ...
最新文章
- python汽车仿真_汽车山羊问题的分析以及Python和MATLAB仿真实验
- AtCoder Beginner Contest 131 F - Must Be Rectangular!
- 盗窃60秒java_EOS节点投票60秒刷新一次 EOS Asia 金马(下) 欧链·宁话区块链 EOS超级节点访谈...
- yili邮箱服务器配置,手把手教 个人SMTP服务器的配置 -电脑资料
- 数学系和物理系学生有什么差别?
- iOS 自定义layer的两种方式
- 百度搜索URL参数的含义
- 手机背景图片在安卓手机上不显示
- PLC可编程控制器的结构和工作原理
- 利用Twemperf测试Memcache的性能
- C语言printf格式化输出
- PowerDesign
- 【转载】100个思维模型(不一定都适用,各取所需)
- 计算机二级第二课堂学记录表,第二课堂学分/第二课堂学分是什么?大学第二课堂学分不够...
- 计算机视觉城市排名,计算机视觉技术量化城市变迁
- 交直流调速系统matlab,MATLAB与交直流调速系统仿真.ppt
- 目前数据分析师都有哪些国际认证
- Sort Sort Sort
- 高德地图/腾讯地图地址转换经纬度
- 世博之旅 (1/2)
热门文章
- 2019年全栈工程师技术指南和趋势!
- 怎么修改_PDF怎么修改文字?其实修改PDF内容很简单
- oracle 日结 数据量大,如何对一个oracle11gsql语
- 计算机网络第4版潘爱民_学术活动 钱江会计实务精英讲坛预告(第84期)| 何继昌 : 战略视角下之财务分析应用实践 兼选股案例分享...
- 简单型的弱电机房工程汇报方案
- GB50174-2017新旧对比
- java opengl_java基于OpenGL ES实现渲染实例
- ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
- AI:人工智能概念之机器学习ML、深度学习DL、数据挖掘、知识发现、模式识别等重要领域之间比较关系结构图之详细攻略
- CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录(第二次)