初识Linux · 线程互斥
发布时间 - 2025-06-19 00:00:00 点击率:次前言:
本文的主题是线程互斥,但是我们不能光单独的把概念引出来,我们肯定要一个场景,所以我们将抢票这个场景引出来,模拟一下抢票的场景,随即引出今天的主题。
那么对于线程互斥这个主题,我们从以下几点介绍:
认识锁和它的接口->解决历史问题->原理角度理解锁->实现角度理解锁。
当然了,因为没有理解抢票这个场景,所以我们暂时不知道锁是什么是正常的,那么,直接进入主题吧!
抢票的基本逻辑是多个线程一起抢,所以我们需要创建多线程,多线程创建好了之后,都执行同一个函数,即抢票函数。
同时,我们将票的数量固定到只有10000张,让4个线程在规定时间之
内抢票,因为cpu里面存在时间片的概念,所以我们不妨设置一个死循环,一个线程在规定时间之内能抢多少就抢多少。
基本逻辑我们已经捋顺了,现在直接实现吧!
代码语言:javascript代码运行次数:0运行复制int tickets = 10000;void Rounte(const std::string& name){ while(true) { if(tickets > 0) { usleep(1000); printf("who: %s, get a ticket: %d\n", name.c_str(), tickets); tickets--; } else { break; } }}int main(){ Thread t1("thread -1", Rounte); Thread t2("thread -2", Rounte); Thread t3("thread -3", Rounte); Thread t4("thread -4", Rounte); t1.Start(); t2.Start(); t3.Start(); t4.Start(); t1.Join(); t2.Join(); t3.Join(); t4.Join(); return 0;}当然了,使用的线程是我们自己实现的线程,使用起来还是比较丝滑的。
那么我们认为的现象应该是最后tickets到了0,循环结束,整个代码完美结束。
不过……?
抢到了负数?
抢到了相同的票?
# linux
# ai
# JavaScript
# 循环
# 接口
# 线程
# 多线程
# 抢到
# 好了
# 互斥
# 多个
# 当然了
# 几点
# 直接进入
# 肯定要
# 暂时不
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
php结合redis实现高并发下的抢购、秒杀功能的实例
Laravel storage目录权限问题_Laravel文件写入权限设置
微信推文制作网站有哪些,怎么做微信推文,急?
详解jQuery中的事件
EditPlus中的正则表达式 实战(2)
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel如何实现数据库事务?(DB Facade示例)
如何快速查询网站的真实建站时间?
EditPlus中的正则表达式 实战(1)
如何用美橙互联一键搭建多站合一网站?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
如何在IIS7上新建站点并设置安全权限?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel如何处理CORS跨域请求?(配置示例)
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
如何快速生成ASP一键建站模板并优化安全性?
昵图网官方站入口 昵图网素材图库官网入口
如何在宝塔面板中修改默认建站目录?
大连网站制作公司哪家好一点,大连买房网站哪个好?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
如何在IIS中配置站点IP、端口及主机头?
如何选择可靠的免备案建站服务器?
微信小程序 五星评分(包括半颗星评分)实例代码
如何自定义建站之星网站的导航菜单样式?
如何在万网自助建站中设置域名及备案?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
如何快速搭建安全的FTP站点?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
微信小程序 闭包写法详细介绍
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Python3.6正式版新特性预览
如何彻底删除建站之星生成的Banner?
如何在万网利用已有域名快速建站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
如何在新浪SAE免费搭建个人博客?
利用python获取某年中每个月的第一天和最后一天
制作旅游网站html,怎样注册旅游网站?
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
微信小程序 input输入框控件详解及实例(多种示例)
如何制作一个表白网站视频,关于勇敢表白的小标题?
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
下一篇:U盘锁电脑,安全新把关
下一篇:U盘锁电脑,安全新把关

