#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++进程间通信(常用理解例子)-买票的更多相关文章

  1. 你好,C++(37)上车的人请买票!6.3.3 用虚函数实现多态

    6.3.3  用虚函数实现多态 在理解了面向对象的继承机制之后,我们知道了在大多数情况下派生类是基类的“一种”,就像“学生”是“人”类中的一种一样.既然“学生”是“人”的一种,那么在使用“人”这个概念 ...

  2. FZU 2029 买票问题 树状数组+STL

    题目链接:买票问题 思路:优先队列维护忍耐度最低的人在队首,leave操作ok. vis数组记录从1到n的编号的人们是不是在队列中,top维护队首的人的编号.pop操作搞定. 然后,check操作就是 ...

  3. java多线程编程(3)买票

    1,买票非同步版本 http://www.cnblogs.com/anbylau2130/archive/2013/04/17/3025347.html很详细 public class 多线程2 { ...

  4. Java 数量为5的线程池同时运行5个窗口买票,每隔一秒钟卖一张票

    /** * 1.创建线程数量为5的线程池 * 2.同时运行5个买票窗口 * 3.总票数为100,每隔一秒钟卖一张票 * @author Administrator * */ public class ...

  5. 杭电1133 排队买票 catalan

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  6. 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 ...

  7. JDOJ 1928: 排队买票

    JDOJ 1928: 排队买票 JDOJ传送门 Description 一场演唱会即将举行.现有n个歌迷排队买票,一个人买一张,而售票处规定,一个人每次最多只能买两张票.假设第i位歌迷买一张票需要时间 ...

  8. java 多线程之synchronized wait/notify解决买票问题

    一.Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程对象的st ...

  9. python8.4景区买票

    from threading import Threadimport threadinglock=threading.Lock()num=100#定义买票方法def sale(name): lock. ...

随机推荐

  1. css3:border-radius圆角边框详解 (变圆 图片)

    转:http://www.kuqin.com/shuoit/20141014/342620.html border-radius:50% 今天来聊聊这个border-radius属性,radius的英 ...

  2. 关于JS变量和作用域

    ECMAScript 变量:1.基本类型值(简单数据段) 2.引用类型值(可能由过个值构成的对象) → 保存在内存中的对象 动态属性: 只能给引用型值动态添加新属性,以便将来使用. 复制变量值 : 基 ...

  3. android学习—should use @string resource警告

    在布局文件中,文本的设置使用如下写法时会有警告:Hardcoded string "BUTTON", should use @string resource <Button ...

  4. Ubuntu14.04右键菜单添加Sublime 2打开选项

    序 Ubuntu上安装Sublime的时候直接下载的压缩包(软件中心里没有找到Sublime),于是每次想用Sublime打开一个文件的时候就得先打开Sublime然后从File -> Open ...

  5. BaseActivity的定义——作为所有Activity类的父类

    public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { prote ...

  6. Nginx 变量漫谈(四)

    在设置了“取处理程序”的情况下,Nginx 变量也可以选择将其值容器用作缓存,这样在多次读取变量的时候,就只需要调用“取处理程序”计算一次.我们下面就来看一个这样的例子:     map $args  ...

  7. android Xml生成一条细线,以及获取屏幕宽度和高度

    <View android:layout_width="match_parent" android:layout_height="2dip" androi ...

  8. 进程退出前删除自身EXE

    进程退出前删除自身EXE 下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手. ...

  9. 注册flash.ocx inno setup (转)

    ; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "xx模块" #de ...

  10. Wireshark入门与进阶系列(二)

    摘自http://blog.csdn.net/howeverpf/article/details/40743705 Wireshark入门与进阶系列(二) “君子生非异也,善假于物也”---荀子 本文 ...