*注:(此代码必背

##

#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

火车票线程同步(一)互斥体实现相关推荐

  1. linux线程基础篇----线程同步与互斥

    linux线程基础----线程同步与互斥 一.同步的概念 1.同步概念  所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两个设备   ...

  2. C++ 线程同步之互斥锁

    文章目录 1.简介 2.std::mutex 3.线程同步 4.std::lock_guard 5.std::recursive_mutex-少用 6.std::timed_mutex 1.简介 进行 ...

  3. Linux线程同步(三)---互斥锁源码分析

    先给自己打个广告,本人的微信公众号:嵌入式Linux江湖,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题. 一 源码分析 1.li ...

  4. linux操作系统之线程同步及互斥量

    (1)线程同步 1)线程同步:指一个线程发出某一个功能运行时,在运行还没有结束的时候,该调用不返回.同时其它线程为保证数据的一致性,不能调用该功能. 2)多个控制流共同操作一个共享资源的时候,都需要同 ...

  5. Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)

    同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两 个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容 ...

  6. 线程同步之互斥量(互斥锁)

    1 同步的概念 所谓同步, 即同时起步,协调一致.不同的对象, 对"同步" 的理解方式略有不同. 如,设备同步,是指在两个设备之间规定一个共同的时间参考: 数据库同步, 是指让两个 ...

  7. linux线程同步之互斥锁——linux的关键区域

    在windows中,为了让多个线程达到同步的目的,在对于全局变量等大家都要用的资源的使用上,通常得保证同时只能由一个线程在用,一个线程没有宣布对它的释放之前,不能够给其他线程使用这个变量.在windo ...

  8. 线程同步之——互斥量及死锁问题

    互斥量:多个线程同时访问共享数据时可能会冲突,这跟信号的可重性是同样的问题.如 果两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成: 1. 从内存读变量值到寄存器 2. 寄存器的值加 ...

  9. linux线程同步(1)-互斥量

    一.概述                                                   互斥量是线程同步的一种机制,用来保护多线程的共享资源.同一时刻,只允许一个线程对临界区进行 ...

  10. 1线程同步:互斥量,死锁

     1线程为什么要同步 A:共享资源,多个线程都可对共享资源操作. B:线程操作共享资源的先后顺序不确定. C:处理器对存储器的操作一般不是原子操作. 2互斥量 mutex操作原语 pthread_ ...

最新文章

  1. 016_Redis集群的删除和添加节点
  2. SpringBoot基础篇配置信息之配置刷新
  3. mysql 主从 cap_Mysql 主从同步 slave_sql_running 为no
  4. FastThreadLocal原理
  5. Verilog HDL语言设计实现过程赋值+译码器
  6. [转]Visual Studio 各版本下载
  7. php留言板显示不出,php留言板源代码_php留言代码留言后显示乱码
  8. 分页标签commons.tld,NavigationTag,Page
  9. 利用oc门或od门实现线与_TTL,CMOS,OC门,OD门的理解
  10. tinder和bumble_发布课程:Tinder,Reddit,Airbnb,Etsy和Uber如何吸引了第一批用户
  11. sikuli和Robotframework集成若干问题(一):TypeError: exists(): 2nd arg can't be coerced to double
  12. 读懂React原理之调和与Fiber
  13. java web景点规划导航
  14. win10误禁用任务计划程序导致任务栏里的输入法丢失
  15. Java设计模式之(十二)——观察者模式
  16. 图像的腐蚀(erosion)和膨胀(dilation)
  17. 计算机怎么格式化硬盘,电脑怎么格式化硬盘
  18. 服务器验收性能标准,云服务器 验收
  19. Hexo Next 主题中添加本地搜索功能
  20. PIN1(PIN) PIN2 PUK1(PUK) PUK2的区别

热门文章

  1. 微软总部首席测试专家做客中关村图书大厦“说法”
  2. 123. 买卖股票的最佳时机 III
  3. 52多项式07——有理系数和整系数多项式、埃森斯坦判别法、整系数多项式的有理根
  4. matlab信息量估计法估计嵌入率,LSB密写分析-信息量估计法
  5. 力扣-19 删除链表的倒数第N个结点
  6. 拯救Ubuntu环境变量搞蹦导致命令使用不了的办法
  7. Linux执行source /etc/profile报错“:command not found”
  8. console.log()中的运算与打印事件
  9. opencv3.2.0 Cmake 3.8.0 + tdm-gcc-5.1.0-3 OpenThread
  10. [译]IIS 8.0应用初始化