算法35(生产者线程和消费者线程) - 范文中心

算法35(生产者线程和消费者线程)

05/14

http://blog.csdn.net/dingguozi/article/details/5965293

/*

生产者消费者线程演示

一个生产者线程将int类型的数入列,一个消费者线程将int类型的数出列

*/

#include

#include

#include

#include

#include

using namespace std;

HANDLE ghSemaphore;   //信号量

const int gMax = 100; //生产(消费)总数

std::queue q;   //生产入队,消费出队

//生产者线程

unsigned int __stdcall producerThread(void* pParam)

{

int n = 0;

while(++n

{

//生产

q.push(n);

cout

ReleaseSemaphore(ghSemaphore, 1, NULL); //增加信号量

Sleep(300);//生产间隔的时间,可以和消费间隔时间一起调节

}

_endthread(); //生产结束

return 0;

}

//消费者线程

unsigned int __stdcall customerThread(void* pParam)

{

int n = gMax;

while(n--)

{

WaitForSingleObject(ghSemaphore, 10000);

//消费

q.pop();

cout

Sleep(500);//消费间隔的时间,可以和生产间隔时间一起调节

}

//消费结束

CloseHandle(ghSemaphore);

cout

_endthread();

return 0;

}

void threadWorking()

{

ghSemaphore = CreateSemaphore(NULL, 0, gMax, NULL); //信号量来维护线程同步

cout

unsigned threadID;

HANDLE handles[2];

handles[0] = (HANDLE)_beginthreadex(

NULL,

0,

producerThread,

nullptr,

0,

&threadID);

handles[1] = (HANDLE)_beginthreadex(

NULL,

0,

customerThread,

nullptr,

0,

&threadID);

WaitForMultipleObjects(2, handles, TRUE, INFINITE);

}

int main()

{

threadWorking();

getchar();

return 0;

}


相关内容

  • Dubbo路由模块设计说明书
    Dubbo 路由模块 设计说明书 修改记录 1 目录 1. 1.1. 1.2. 引言 ............................................................................. ...
  • 计算机体系结构的现状及其发展趋势VLIW 指令系统
    计算机体系结构的现状及其发展趋势 庞春江 孟建良 王晓华 (华北电力大学计算机系,保定071000) 摘 要 该文系统概述了现代计算机的两种主要体系结构CISC 体系和RISC 体系,指出了基于冯・诺伊曼体系结构的 现代计算机体系存在的问题 ...
  • 俄罗斯方块
    程序设计实践设计报告 课题名称: 学生姓名: 班 学 日 级: 号: 期: 班内序号: 双人俄罗斯方块游戏程序 陈宸 2013211113 12 2 0 1 3 21 0 3 75 2015.6.13 1.课题概述 1.1 课题目标和主要内 ...
  • 第一章作业 参考答案
    第一章作业 1.设计现代OS 的主要目标是什么? 答:有效性.方便性.可扩充性.开放性. 12.试从交互性.及时性以及可靠性方面,将分时系统与实时系统进行比较. 答: a. 交互性:分时系统是一种通用系统,主要用于运行终端用户程序,因而它具 ...
  • (软件的可扩展性)基于java的局域网聊天系统
    ・242・ J OU RNAL OF N EIJ IAN G NORMAL UNIV ERSIT Y 内江师范学院学报第23卷(增) (2008) 基于java 的局域网聊天系统 汪桃华, 宋 兵, 万 方 3 (内江师范学院计算机科学院, ...
  • 进程间通信方式比较
    进程间的通信方式: 1.管道(pipe)及有名管道(named pipe): 管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信. 2.信号(signal): 信号是在软件层次上对中断机制 ...
  • WinCE的实时性
    提到WinCE及工业控制,也许有人对WinCE的实时性能否满足工业控制要求产生疑问.诚然,WinCE的实时性不如QNX,也不如VxWOrks,但是大量文献表明WinCE的确是嵌入式实时操作系统,也在工业控制市场占有相当的份额.究其原因,离不 ...
  • 研究意义及现状
    1.2无线传感网络的研究意义及国内外研究现状 无线传感器网络是继Internet之后,将对21世纪人类生活方式产生重大影响 的一种rr热点技术.Internet改变了人与人之间交流.沟通的方式,而无线传感 器网络将逻辑上的信息世界与真实物理 ...
  • 程序员证书及课程简介
    程序员证书及课程简介 • 软件程序员证书介绍 • 为什么要取得软件程序员证书 • 为取得证书需要学习哪些知识 • 课程概况及考核办法 一.软考介绍 全国计算机技术与软件专业技术资格(水平)考试(简称计算机软件资格考试)是由国家人事 部和信息 ...
  • CPU后面数字的含义
    CPU 后面数字是什么意思 Intel 处理器往往分系列,例如Celeron .Celeron D.Pentium 4.Pentium D等等,同系列的各个型号用频率.数字.字母等来加以区分,其命名有一定规则,掌握这些规则,可以在一定程度上 ...