本博客主要总结了基于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函数)相关推荐

  1. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解

    linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...

  2. C#多线程编程实例 线程与窗体交互

    C#多线程编程实例 线程与窗体交互 代码: public partial class Form1 : Form{//声明线程数组Thread[] workThreads = new Thread[10 ...

  3. C#中Socket多线程编程实例

    C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...

  4. C# Socket多线程编程实例

    C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...

  5. [转]C#多线程编程实例实战

    单个写入程序/多个阅读程序在.Net类库中其实已经提供了实现,即System.Threading.ReaderWriterLock类.本文通过对常见的单个写入/多个阅读程序的分析来探索c#的多线程编程 ...

  6. Linux多线程编程实例解析

    Linux系统下的多线程遵循POSIX线程接口,称为 pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a.顺便说一下,Linux ...

  7. mfc多线程编程实例_多线程技术的PLC与PC的通讯方式

    点击箭头处"工业之家",选择"关注公众号"! 基于多线程技术的PLC与PC的通讯方式 1.系统构成  推进系统中,PC机选用工控计算机.它是整个控制系统的核心, ...

  8. python多核多线程编程实例_Python多线程

    多线程基础概念 并行与并发并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允许程 ...

  9. 基于TCP的Socket编程实例

    1.Socket通常称为套接字,应用程序通常通过套接字像网络发送请求或者应答网络请求 2.本文给出了一个服务端与客户端交流的实例代码,可以实现循环交流,代码如下                     ...

最新文章

  1. python汽车仿真_汽车山羊问题的分析以及Python和MATLAB仿真实验
  2. AtCoder Beginner Contest 131 F - Must Be Rectangular!
  3. 盗窃60秒java_EOS节点投票60秒刷新一次 EOS Asia 金马(下) 欧链·宁话区块链 EOS超级节点访谈...
  4. yili邮箱服务器配置,手把手教 个人SMTP服务器的配置 -电脑资料
  5. 数学系和物理系学生有什么差别?
  6. iOS 自定义layer的两种方式
  7. 百度搜索URL参数的含义
  8. 手机背景图片在安卓手机上不显示
  9. PLC可编程控制器的结构和工作原理
  10. 利用Twemperf测试Memcache的性能
  11. C语言printf格式化输出
  12. PowerDesign
  13. 【转载】100个思维模型(不一定都适用,各取所需)
  14. 计算机二级第二课堂学记录表,第二课堂学分/第二课堂学分是什么?大学第二课堂学分不够...
  15. 计算机视觉城市排名,计算机视觉技术量化城市变迁
  16. 交直流调速系统matlab,MATLAB与交直流调速系统仿真.ppt
  17. 目前数据分析师都有哪些国际认证
  18. Sort Sort Sort
  19. 高德地图/腾讯地图地址转换经纬度
  20. 世博之旅 (1/2)

热门文章

  1. 2019年全栈工程师技术指南和趋势!
  2. 怎么修改_PDF怎么修改文字?其实修改PDF内容很简单
  3. oracle 日结 数据量大,如何对一个oracle11gsql语
  4. 计算机网络第4版潘爱民_学术活动 钱江会计实务精英讲坛预告(第84期)| 何继昌 : 战略视角下之财务分析应用实践 兼选股案例分享...
  5. 简单型的弱电机房工程汇报方案
  6. GB50174-2017新旧对比
  7. java opengl_java基于OpenGL ES实现渲染实例
  8. ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
  9. AI:人工智能概念之机器学习ML、深度学习DL、数据挖掘、知识发现、模式识别等重要领域之间比较关系结构图之详细攻略
  10. CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录(第二次)