当前位置: 首页 > news >正文

多线程的状态及切换流程

多线程的状态及切换流程

线程状态说明:

  • 初始化(Init):该线程正在被创建。
  • 就绪(Ready):该线程在就绪列表中,等待 CPU 调度。
  • 运行(Running):该线程正在运行。
  • 阻塞(Blocked):该线程被阻塞挂起。Blocked 状态包括:pend(锁、 事件、信号量等阻塞)、suspend(主动 pend)、delay(延时阻塞)、 pendtime(因为锁、事件、信号量时间等超时等待)。
    在这里插入图片描述
#include <thread>
#include <iostream>
#include <string>
#include <mutex>
#include <shared_mutex>
//Linux -lpthread
using namespace std;
//c++17  共享锁
//shared_mutex smux;//c++14 
shared_timed_mutex stmux;void ThreadRead(int i)
{for (;;){stmux.lock_shared();cout << i << " Read" << endl;this_thread::sleep_for(500ms);stmux.unlock_shared();this_thread::sleep_for(1ms);}
}
void ThreadWrite(int i)
{for (;;){stmux.lock_shared();//读取数据stmux.unlock_shared();stmux.lock(); //互斥锁 写入cout << i << " Write" << endl;this_thread::sleep_for(300ms);stmux.unlock();this_thread::sleep_for(1ms);}
}
int main(int argc, char* argv[])
{for (int i = 0; i < 3; i++){thread th(ThreadWrite, i + 1);th.detach();}for (int i = 0; i < 3; i++){thread th(ThreadRead, i + 1);th.detach();}getchar();return 0;
}
http://www.lryc.cn/news/460509.html

相关文章:

  • [Python学习日记-47] Python 中的系统调用模块—— os 与 sys
  • Linux系统——lvm逻辑卷
  • 一键快捷回复软件助力客服高效沟通
  • 初识Linux之指令(二)
  • 在深度学习中,Epoch、迭代次数、批次大小(Batch Size)和学习速率(Learning Rate)是影响模型训练效果的重要超参数。
  • 研究学习的循环递进三段论
  • Linux下如何将代码提交至Gitee
  • 【MATLAB源码-第181期】基于matlab的32QAM调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。
  • 24年856电子线路专业课考场回忆
  • el-table表格里面有一条横线
  • QT通过QLocalSocket和QSharedMemory实现进程间通信
  • Python中的数据可视化艺术:用Matplotlib和Seaborn讲故事
  • python机器学习(手写数字识别)
  • 如何针对项目中的技术难点准备面试?——黑马点评为例
  • ARP欺骗的多种手法
  • HCIA——one
  • 【vue】⾃定义指令+插槽+商品列表案例
  • 多线程——线程的等待通知
  • 模态与非模态的对话框
  • C语言练习
  • CyberRt实践之Hello Apollo(Apollo 9.0版本)
  • 【JavaScript】LeetCode:61-65
  • 【SpringAI】(一)从实际场景入门大模型——适合Java宝宝的大模型应用开发
  • 植物大战僵尸杂交版
  • live2d 实时虚拟数字人形象页面显示,对接大模型
  • SpringCloud-持久层框架MyBatis Plus的使用与原理详解
  • Servlet的HttpServletRequest
  • U9销售订单不能带出最新价格出来
  • Jmeter接口测试企业级项目实战day1
  • 接口测试面试题含答案