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

C++的并发世界(五)——线程状态切换

0.线程状态

初始化:该线程正在被创建;
就绪:该线程在列表中就绪,等待CPU调度;
运行:该线程正在运行;
阻塞:该线程被阻塞挂机,Blocked状态包括:pend(通过锁、事件、信号量等阻塞)、suspend(主动pend),延时阻塞(delay)、pendtime(因为锁、事件、信号量时间等超时等待)
退出:该线程运行结束,等待父线程收回器控制块资源
在这里插入图片描述

1.竞争状态和临界区

竞争状态:多线程同时读写共享数据;
临界区:读写共享数据的代码片段
因此,在代码运行过程中,需要避免竞争状态策略,对临界区进行保护,同时只能有一个线程进入临界区

2.代码案例

#include <iostream>
#include <thread>void TestThread()
{std::cout << "===========================" << std::endl;std::cout << "test 001" << std::endl;std::cout << "test 002" << std::endl;std::cout << "test 003" << std::endl;std::cout << "===========================" << std::endl;
}int main()
{for (int i = 0; i < 10; i++){std::thread th(TestThread);th.detach();}getchar();return 0;
}

在这里插入图片描述

#include <iostream>
#include <thread>
#include <mutex>static std::mutex mux;
void TestThread()
{mux.lock();std::cout << "===========================" << std::endl;std::cout << "test 001" << std::endl;std::cout << "test 002" << std::endl;std::cout << "test 003" << std::endl;std::cout << "===========================" << std::endl;mux.unlock();
}int main()
{for (int i = 0; i < 10; i++){std::thread th(TestThread);th.detach();}getchar();return 0;
}

在这里插入图片描述

相关文章:

C++的并发世界(五)——线程状态切换

0.线程状态 初始化&#xff1a;该线程正在被创建&#xff1b; 就绪&#xff1a;该线程在列表中就绪&#xff0c;等待CPU调度&#xff1b; 运行&#xff1a;该线程正在运行&#xff1b; 阻塞&#xff1a;该线程被阻塞挂机&#xff0c;Blocked状态包括&#xff1a;pend&#xff…...

C语言——指针

地址是由物理的电线上产生的&#xff0c;能够标识唯一一个内存单元。在C语言中&#xff0c;地址也叫做指针。 在32位机器中&#xff0c;有32根地址线。地址是由32个0/1组成的二进制序列&#xff0c;也就是用4个字节来存储地址。 在64位机器中&#xff0c;有64根地址线。地址是…...

手搓二分查找

第一种&#xff1a; 该种方法是若a[mid]目标数&#xff0c;则让r一直等于mid&#xff0c;让l往右移动&#xff0c;一直移动到rl&#xff0c;这时候跳出循环&#xff0c;在循环外判断 但是不能写成让lmid&#xff0c;让r往左移动&#xff0c;比如a[2]key&#xff0c;这时&#x…...

pycharm调试(步过(Step Over)、单步执行(Step Into)、步入(Step Into)、步出(Step Out))

pycharm调试 pycharm调试 pycharm调试为什么要学会调试&#xff1f;1. 步过 (Step Over)2. 单步执行 (Step Into)3. 步入&#xff08;Step Into&#xff09;4. 步出&#xff08;Step Out&#xff09; 为什么要学会调试&#xff1f; 调试可以帮助初学者更深入地理解编程基础&am…...

Linux是什么,该如何学习

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux的起源与发展 2、Linux在现代计算机领域…...

C++ | Leetcode C++题解之第7题整数反转

题目&#xff1a; 题解&#xff1a; class Solution { public:int reverse(int x) {int rev 0;while (x ! 0) {if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {return 0;}int digit x % 10;x / 10;rev rev * 10 digit;}return rev;} };...

Linux------一篇博客了解Linux最常用的指令

&#x1f388;个人主页&#xff1a;靓仔很忙i &#x1f4bb;B 站主页&#xff1a;&#x1f449;B站&#x1f448; &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;Linux &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#…...

vscode安装通义灵码

作为vscode的插件&#xff0c;直接使用 通义灵码-灵动指间&#xff0c;快码加编&#xff0c;你的智能编码助手 通义灵码&#xff0c;是一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研…...

RIP协议(路由信息协议)

一、RIP协议概述 RIP协议&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;即根据跳数来度量路由开销&#xff0c;进行路由选择。 相比于其它路由协议&#xff08;如OSPF、ISIS等&#xff09;&#…...

SpringBoot根据配置类动态加载不同环境下的自定义配置

dev环境配置 Profile({"dev","test"}) PropertySource("classpath:dev.properties") public class DevConfigLoader { }Profile("prod") PropertySource("classpath:prod.properties") public class ProdConfigLoader { }P…...

什么?穷哥们没钱RLHF?跟我一起DPO吧,丐版一样用

本次DPO训练采用TRL的方式来进行训练 Huggingface TRL是一个基于peft的库&#xff0c;它可以让RL步骤变得更灵活、简单&#xff0c;你可以使用这个算法finetune一个模型去生成积极的评论、减少毒性等等。 本次进行DPO的模型是一个500M的GPT-2&#xff0c;目的是训练快&#x…...

【Leetcode笔记】102.二叉树的层序遍历

目录 知识点Leetcode代码&#xff1a;ACM模式代码&#xff1a; 知识点 vector、queue容器的操作 对vector<int> vec;做插入元素操作&#xff1a;vec.push_back(x)。对queue<TreeNode*> que;做插入元素操作&#xff1a;que.push(root);。队列有四个常用的操作&…...

进程的状态

目录 1.操作系统的进程状态 2.Linux系统的进程状态 特殊的进程状态 进程的查看 1.操作系统的进程状态 a.新建&#xff1a;就是新建一个进程 b.运行&#xff1a;PCB结构体在运行队列中排队 c.阻塞&#xff1a;PCB结构体在等待队列中&#xff0c;等待非CPU资源就续 d:挂起…...

spring-boot集成websocket

引入Maven依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>跟随spingboot版本</version> </dependency>后端代码 /*** 开启WebSocket支持*…...

【Python】【Flask】提交表单后报500错误

【背景】 日常用户使用的一个Online的基于Flask做的工具,今天忽然报错,看现象是点击表单提交按钮后发生错误。报500内部错误。 【分析】 用print步步为营接近root cause。 报错对应视图函数的展示部分正常执行。提交表单按钮后的内容全部没有正常执行。 提交表单用的方法是…...

Golang vs Java

目录 前言 一、语言背景与特性 二、性能与效率 三、生态系统与库支持 四、开发体验与工具支持 五、微服务架构设计中的对比 六、总结与建议 前言 在当今的软件开发世界中&#xff0c;选择合适的编程语言对于项目的成功至关重要。GoLang&#xff08;也称为Golang&#x…...

HomePlug AV

目录 HomePlug AV的基本概念基本术语网络概念网络实例 HomePlug AV物理层&#xff08;PHY&#xff09;HomePlug AV OFDM收发器架构PHY的调制模式FC调制和ROBO调制物理层的特点OFDM频域/时域转换开窗/槽式OFDM信号和噪声PHY发送控制——信道自适应PHY帧格式&#xff08;Symbol&a…...

【面试八股总结】超文本传输协议HTTP(二)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、HTTP缓存技术 将资源&#xff08;如网页、图像、脚本等&#xff09;的副本存储在客户端或中间代理服务器上&#xff0c;以便将来的请求可以直接从缓存中获取&#xff0c;而不必重新从服务器下载资源。这有助于减少网…...

SQL Server中视图使用子查询的性能影响与优化方案

在SQL Server中&#xff0c;视图&#xff08;View&#xff09;是一种虚拟的表&#xff0c;其内容由查询定义。在视图中&#xff0c;我们可以使用子查询来组合和呈现数据&#xff0c;这为数据呈现提供了灵活性&#xff0c;但同时也可能带来一些性能上的问题。本文将深入分析视图…...

Adaboost集成学习 | Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | 基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)基于SVM(支持向量机)和AdaBoost集成学习的时间序列预测(如股票价格预测)是一种结合了两种强大机器学习算…...

FPGA/CPLD数字系统设计实战:从器件选型到调试验证的工程指南

1. 从一则行业趣闻聊起&#xff1a;FPGA厂商的“江湖地位”与我们的设计选择前几天翻看一些老旧的行业资料&#xff0c;偶然间又看到了这篇2012年来自EE Times的“陈年旧文”。文章作者Clive Maxfield用他标志性的幽默笔调&#xff0c;聊了一个看似无厘头的话题&#xff1a;将科…...

DeepSeek API Gateway与大模型推理服务深度协同:如何实现Token级流控、异步响应封装、Streaming SSE自动保活?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek API Gateway架构全景与核心定位 DeepSeek API Gateway 是面向大模型服务的高性能、可扩展网关系统&#xff0c;承担请求路由、认证鉴权、流量控制、协议转换与可观测性聚合等关键职责。它并非…...

60 秒应急窗口下 AI 钓鱼攻击防御体系构建与工程实践

摘要 2026 年网络钓鱼攻击呈现秒级入侵、全域渗透、AI 驱动的显著特征&#xff0c;钓鱼邮件抵达至用户输入敏感信息的中位时间仅 60 秒&#xff0c;勒索软件攻击频率约每 2 秒一起&#xff0c;AI 自动化鱼叉式钓鱼点击率高达 54%&#xff0c;传统防御机制已无法适配当前威胁节奏…...

CSS 混合模式完全指南

CSS 混合模式完全指南 引言 CSS 混合模式&#xff08;Blend Modes&#xff09;是一种强大的视觉效果工具&#xff0c;它允许你控制多个元素或图层如何混合在一起。本文将深入探讨各种混合模式的用法和高级技巧。 混合模式类型 基础混合模式 模式效果描述normal默认模式&#xf…...

5分钟掌握HunterPie:解决《怪物猎人:世界》战斗信息盲区的终极指南

5分钟掌握HunterPie&#xff1a;解决《怪物猎人&#xff1a;世界》战斗信息盲区的终极指南 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_…...

Claude规则引擎:结构化提示词管理与Prompt Engineering实战

1. 项目概述&#xff1a;一个规则引擎的诞生与价值 最近在社区里看到不少朋友在讨论如何更好地管理和复用与Claude这类大型语言模型交互时的提示词&#xff08;Prompt&#xff09;和规则集。我自己在长期使用过程中也深有体会&#xff1a;每次开启一个新对话&#xff0c;要么得…...

AC鸭的温度墙

题目描述AC鸭在实验室里看到了一面很长的温度墙&#xff0c;这面墙从左到右一共有 n 个位置。一开始&#xff0c;每个位置的温度都是 0。接下来 AC鸭会进行 m 次加热操作。每次操作给出 l,r,v表示把第l个位置到第r个位置的温度都加上上v。所有操作结束后&#xff0c;AC鸭想知道…...

AI应用开发工程师(Agent方向):AI Agent开发工程师高薪入行指南,掌握核心技能,成为企业AI大脑!

在 AI 领域&#xff0c;AI Agent&#xff08;智能体&#xff09; 正在成为最热门的方向之一。从 智能客服 到 自动化办公助手&#xff0c;再到 企业知识管理&#xff0c;AI Agent 正在改变人与机器的交互方式。那么&#xff0c;AI 应用开发工程师&#xff08;Agent方向&#xf…...

Apache SeaTunnel 4 月有何新动作?连接器增强与 Zeta 稳定性提升等亮点速览

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

STM32+RS485实战:用Modbus RTU协议读取液压传感器数据(附自动收发电路避坑)

STM32与RS485实战&#xff1a;从电路设计到Modbus RTU协议解析 液压传感器数据采集在工业自动化领域有着广泛应用&#xff0c;而RS485总线因其抗干扰能力强、传输距离远等优势成为首选通信方式。本文将深入探讨如何基于STM32微控制器搭建RS485硬件电路&#xff0c;并通过Modbus…...