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. ...
随机推荐
- css3:border-radius圆角边框详解 (变圆 图片)
转:http://www.kuqin.com/shuoit/20141014/342620.html border-radius:50% 今天来聊聊这个border-radius属性,radius的英 ...
- 关于JS变量和作用域
ECMAScript 变量:1.基本类型值(简单数据段) 2.引用类型值(可能由过个值构成的对象) → 保存在内存中的对象 动态属性: 只能给引用型值动态添加新属性,以便将来使用. 复制变量值 : 基 ...
- android学习—should use @string resource警告
在布局文件中,文本的设置使用如下写法时会有警告:Hardcoded string "BUTTON", should use @string resource <Button ...
- Ubuntu14.04右键菜单添加Sublime 2打开选项
序 Ubuntu上安装Sublime的时候直接下载的压缩包(软件中心里没有找到Sublime),于是每次想用Sublime打开一个文件的时候就得先打开Sublime然后从File -> Open ...
- BaseActivity的定义——作为所有Activity类的父类
public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { prote ...
- Nginx 变量漫谈(四)
在设置了“取处理程序”的情况下,Nginx 变量也可以选择将其值容器用作缓存,这样在多次读取变量的时候,就只需要调用“取处理程序”计算一次.我们下面就来看一个这样的例子: map $args ...
- android Xml生成一条细线,以及获取屏幕宽度和高度
<View android:layout_width="match_parent" android:layout_height="2dip" androi ...
- 进程退出前删除自身EXE
进程退出前删除自身EXE 下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手. ...
- 注册flash.ocx inno setup (转)
; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "xx模块" #de ...
- Wireshark入门与进阶系列(二)
摘自http://blog.csdn.net/howeverpf/article/details/40743705 Wireshark入门与进阶系列(二) “君子生非异也,善假于物也”---荀子 本文 ...