首页 > 代码库 > Visual Studio 2010多线程编程
Visual Studio 2010多线程编程
随着处理数据量的逐渐增大,串行单核的程序,宛如残灯缺月,无法满足运用需求。
大规模集群的出现。攻克了这一技术难题。本文旨在探讨怎样使用多CPU并行编程,关于CUDA的并行前面文章已有讲述。本文结构分为三部分。第一部分给出一段代码,模拟卖火车票的程序;第二部分对程序进行解说,方便大家交流学习;第三部分给出程序结果。
一、程序代码
<script src="https://code.csdn.net/snippets/438698.js" type="text/javascript"></script>
二、代码解说
本程序运用两个线程对100张票进行售卖,为了保证同步。使用了相互排斥对象。
<script src="https://code.csdn.net/snippets/438723.js" type="text/javascript"></script>
对两个线程入口函数的申明。定义火车票的总数以及卖出火车票的index,最后创建一个全局变量用于保存相互排斥对象句柄。
<script src="https://code.csdn.net/snippets/438733.js" type="text/javascript"></script>
申请两个HANDLE变量。表示线程的指针;创建相互排斥对象,三个參数分别为:安全结构指针(NULL表示默认的安全性),相互排斥对象的初始拥有者(FALSE表示没有),相互排斥对象的名称(NULL表示默认);最后使用CreateThread创建两个线程,六个參数分别为:安全结构指针(NULL表示默认的安全性),设置初始栈的大小,入口函数指针。给新线程函数的參数。控制线程创建的标记(0表示创建后马上运行),返回值用来接收线程ID;
<script src="https://code.csdn.net/snippets/438747.js" type="text/javascript"></script>
关闭新线程的句柄,但没有终止创建的线程;然后休眠400毫秒;
<script src="https://code.csdn.net/snippets/438753.js" type="text/javascript"></script>
线程1入口函数,进入while循环,首先使用WaitForSingleObject(hMutex,INFINITE)请求相互排斥对象,然后运行小儿科程序,最后释放相互排斥对象,谁拥有相互排斥对象谁释放,从而保证了对全局变量的同步訪问。线程2同理。
OK,本节内容解说完成!
三、执行结果
Visual Studio 2010多线程编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。