C++进程间通信(常用理解例子)-买票
#include "stdafx.h"
#include <iostream>
using namespace std;
#include "windows.h"
int index = 0;
int tickets = 100;
HANDLE hMutex = NULL; //互斥
HANDLE hEvent = NULL; //事件
CRITICAL_SECTION g_cs ; //临界区
DWORD WINAPI Func1(LPVOID pParam)
{
while(true)
{
// WaitForSingleObject(hMutex, INFINITE);
WaitForSingleObject(hEvent,INFINITE);
// EnterCriticalSection(&g_cs);
if(tickets> 0)
{
Sleep(1);
cout<<"thread1 sell tickets:"<<tickets--<<endl;
}
else
break;
// ReleaseMutex(hMutex);
SetEvent(hEvent);
// LeaveCriticalSection(&g_cs);
}
return 0;
}
DWORD WINAPI Func2(LPVOID pParam)
{
while(true)
{
// WaitForSingleObject(hMutex,INFINITE);
WaitForSingleObject(hEvent,INFINITE);
// EnterCriticalSection(&g_cs);
if(tickets> 0)
{
Sleep(1);
cout<<"thread2 sell tickets:"<<tickets--<<endl;
}
else
break;
// ReleaseMutex(hMutex);
SetEvent(hEvent);
// LeaveCriticalSection(&g_cs);
}
return 0;
}
void main()
{
HANDLE hThread1 =CreateThread(NULL, 0, Func1, NULL, 0, NULL);
HANDLE hThread2 =CreateThread(NULL, 0, Func2, NULL, 0, NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
//hMutex = CreateMutex(NULL,FALSE,NULL);
hEvent =CreateEvent(NULL, FALSE, TRUE,NULL);
//InitializeCriticalSection(&g_cs);
Sleep(4000);
//DeleteCriticalSection(&g_cs);
}
C++进程间通信(常用理解例子)-买票的更多相关文章
- 你好,C++(37)上车的人请买票!6.3.3 用虚函数实现多态
6.3.3 用虚函数实现多态 在理解了面向对象的继承机制之后,我们知道了在大多数情况下派生类是基类的“一种”,就像“学生”是“人”类中的一种一样.既然“学生”是“人”的一种,那么在使用“人”这个概念 ...
- FZU 2029 买票问题 树状数组+STL
题目链接:买票问题 思路:优先队列维护忍耐度最低的人在队首,leave操作ok. vis数组记录从1到n的编号的人们是不是在队列中,top维护队首的人的编号.pop操作搞定. 然后,check操作就是 ...
- java多线程编程(3)买票
1,买票非同步版本 http://www.cnblogs.com/anbylau2130/archive/2013/04/17/3025347.html很详细 public class 多线程2 { ...
- Java 数量为5的线程池同时运行5个窗口买票,每隔一秒钟卖一张票
/** * 1.创建线程数量为5的线程池 * 2.同时运行5个买票窗口 * 3.总票数为100,每隔一秒钟卖一张票 * @author Administrator * */ public class ...
- 杭电1133 排队买票 catalan
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- poj 2828 Buy Tickets 【买票插队找位置 输出最后的位置序列+线段树】
题目地址:http://poj.org/problem?id=2828 Sample Input 4 0 77 1 51 1 33 2 69 4 0 20523 1 19243 1 3890 0 31 ...
- JDOJ 1928: 排队买票
JDOJ 1928: 排队买票 JDOJ传送门 Description 一场演唱会即将举行.现有n个歌迷排队买票,一个人买一张,而售票处规定,一个人每次最多只能买两张票.假设第i位歌迷买一张票需要时间 ...
- java 多线程之synchronized wait/notify解决买票问题
一.Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程对象的st ...
- python8.4景区买票
from threading import Threadimport threadinglock=threading.Lock()num=100#定义买票方法def sale(name): lock. ...
随机推荐
- python 3.5 之 单双三引号
1. 单引号和双引号用法都是一样的,但是如果字符串里有相同的字符时要使用\进行转义 举例:1) print 'hello'2) print "hello"1和2,结果都是hello ...
- Ubuntu中nfs服务器安装与配置
一.执行命令 sudo apt-get install nfs-kernel-server 二.为创建nfs文件夹 sudo mkdir /usr/nfs 更改目录权限:sudo chmod 777 ...
- linux 内核开发基础
开发特点 不需要第三方库支持 使用GNU C 没有内存保护机制 杜绝浮点数 栈区固定 必须关注并发及同步 注意可移植性
- C语言-运算符与表达式
运算符分类: 算术运算符:+ - * / % 关系运算符:> < = <= >= == != 逻辑运算符:&& || ! ...
- 第一局 ThreeJS-开始
本文介绍ThreeJS使用的大体流程.(由于水平有限,请大家多多指教.) 1.ThreeJS下载和引入: (1)下载地址:https://github.com/mrdoob/three.js/arch ...
- acdream 1154 Lowbit Sum
先贴代码,以后再写题解... 首先,直接枚举肯定是会超时的,毕竟n就有10^9那么多... 对于每个数,我们先把它转化为二进制:例:21-->10101: 对于00001~10101,可以分为几 ...
- EF6.0 自定义Code First约定
自定义Code First约定有三种方式,分别是:Lightweight Conventions(轻量级约定).Configuration Conventions(配置型约定).Model-based ...
- QT:浮动的饼状统计图(自绘不规则窗口)
昨天在玩手机游戏时,见到一个游戏的饼状投票统计图很漂亮,所以我今天也花了一个下午来实现了一个类似的程序娱乐一下,呵呵. 思路:1:将窗体设为Qt::FramelessWindowHint和Qt::WA ...
- 小巧数据库 Derby 使用攻略
阅读目录 1. Derby 介绍 2. 稍稍配置下环境变量 3. Derby 操作和 Java 访问 回到顶部 1. Derby 介绍 将目光放在小 Derby 的原因是纯绿色.轻巧.内存占用小,分分 ...
- #pragma pack(n) 的作用
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int.long.float等)的变量,也可以是一些复合数据类型(如数组.结构.联合等)的数据单元.在结构中,编译器为结构的每个成 ...