火车票线程同步(一)互斥体实现
*注:(此代码必背)
##
#include <windows.h> #include <iostream>int tickets = 100; HANDLE hMutex;DWORD WINAPI FunProc1(LPVOID param) {while (TRUE){WaitForSingleObject(hMutex, INFINITE);if (tickets > 0){std::cout << "thread1 sell ticket:" << tickets-- << std::endl;}elsebreak;ReleaseMutex(hMutex);}return 0; } DWORD WINAPI FunProc2(LPVOID param) {while (TRUE){WaitForSingleObject(hMutex, INFINITE);if (tickets > 0){std::cout << "thread2 sell ticket:" << tickets-- << std::endl;}elsebreak;ReleaseMutex(hMutex);}return 0; }int main() {HANDLE hThread1, hThread2;hMutex = CreateMutex(NULL, FALSE, NULL);//创建互斥体的线程(也就是此主线程)不拥有//互斥对象,操作系统会将计数置为0,设为有信号状态。hThread1 = CreateThread(NULL, 0, FunProc1, NULL, 0, NULL);hThread2 = CreateThread(NULL, 0, FunProc2, NULL, 0, NULL);CloseHandle(hThread1);CloseHandle(hThread2);Sleep(4000); }
注释:
在创建互斥对象时,第二个参数为FALSE值,表明当前没有线程拥有这个互斥对象,于是操作系统就会将该互斥对象设置为有信号状态。
转载于:https://www.cnblogs.com/tinaluo/p/7710768.html
火车票线程同步(一)互斥体实现相关推荐
- linux线程基础篇----线程同步与互斥
linux线程基础----线程同步与互斥 一.同步的概念 1.同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两个设备 ...
- C++ 线程同步之互斥锁
文章目录 1.简介 2.std::mutex 3.线程同步 4.std::lock_guard 5.std::recursive_mutex-少用 6.std::timed_mutex 1.简介 进行 ...
- Linux线程同步(三)---互斥锁源码分析
先给自己打个广告,本人的微信公众号:嵌入式Linux江湖,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题. 一 源码分析 1.li ...
- linux操作系统之线程同步及互斥量
(1)线程同步 1)线程同步:指一个线程发出某一个功能运行时,在运行还没有结束的时候,该调用不返回.同时其它线程为保证数据的一致性,不能调用该功能. 2)多个控制流共同操作一个共享资源的时候,都需要同 ...
- Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)
同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两 个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容 ...
- 线程同步之互斥量(互斥锁)
1 同步的概念 所谓同步, 即同时起步,协调一致.不同的对象, 对"同步" 的理解方式略有不同. 如,设备同步,是指在两个设备之间规定一个共同的时间参考: 数据库同步, 是指让两个 ...
- linux线程同步之互斥锁——linux的关键区域
在windows中,为了让多个线程达到同步的目的,在对于全局变量等大家都要用的资源的使用上,通常得保证同时只能由一个线程在用,一个线程没有宣布对它的释放之前,不能够给其他线程使用这个变量.在windo ...
- 线程同步之——互斥量及死锁问题
互斥量:多个线程同时访问共享数据时可能会冲突,这跟信号的可重性是同样的问题.如 果两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成: 1. 从内存读变量值到寄存器 2. 寄存器的值加 ...
- linux线程同步(1)-互斥量
一.概述 互斥量是线程同步的一种机制,用来保护多线程的共享资源.同一时刻,只允许一个线程对临界区进行 ...
- 1线程同步:互斥量,死锁
1线程为什么要同步 A:共享资源,多个线程都可对共享资源操作. B:线程操作共享资源的先后顺序不确定. C:处理器对存储器的操作一般不是原子操作. 2互斥量 mutex操作原语 pthread_ ...
最新文章
- 016_Redis集群的删除和添加节点
- SpringBoot基础篇配置信息之配置刷新
- mysql 主从 cap_Mysql 主从同步 slave_sql_running 为no
- FastThreadLocal原理
- Verilog HDL语言设计实现过程赋值+译码器
- [转]Visual Studio 各版本下载
- php留言板显示不出,php留言板源代码_php留言代码留言后显示乱码
- 分页标签commons.tld,NavigationTag,Page
- 利用oc门或od门实现线与_TTL,CMOS,OC门,OD门的理解
- tinder和bumble_发布课程:Tinder,Reddit,Airbnb,Etsy和Uber如何吸引了第一批用户
- sikuli和Robotframework集成若干问题(一):TypeError: exists(): 2nd arg can't be coerced to double
- 读懂React原理之调和与Fiber
- java web景点规划导航
- win10误禁用任务计划程序导致任务栏里的输入法丢失
- Java设计模式之(十二)——观察者模式
- 图像的腐蚀(erosion)和膨胀(dilation)
- 计算机怎么格式化硬盘,电脑怎么格式化硬盘
- 服务器验收性能标准,云服务器 验收
- Hexo Next 主题中添加本地搜索功能
- PIN1(PIN) PIN2 PUK1(PUK) PUK2的区别
热门文章
- 微软总部首席测试专家做客中关村图书大厦“说法”
- 123. 买卖股票的最佳时机 III
- 52多项式07——有理系数和整系数多项式、埃森斯坦判别法、整系数多项式的有理根
- matlab信息量估计法估计嵌入率,LSB密写分析-信息量估计法
- 力扣-19 删除链表的倒数第N个结点
- 拯救Ubuntu环境变量搞蹦导致命令使用不了的办法
- Linux执行source /etc/profile报错“:command not found”
- console.log()中的运算与打印事件
- opencv3.2.0 Cmake 3.8.0 + tdm-gcc-5.1.0-3 OpenThread
- [译]IIS 8.0应用初始化