嵌入式linux中线程编程实现详解

    大家好,今天主要给大家分享一下,线程的使用,通过具体的实例代码来说明一个线程创建到退出到回收的基本流程,后半部分则会通过实例来说明如何能够控制好线程,从临界资源访问与线程的执行顺序控制上引出互斥锁、信号量的概念与使用方法。

第一:为什么要使用线程

场景分析:是否会遇到以下场景感觉难以下手?

场景一:写程序在拷贝文件时,需要一边去拷贝文件,一边去向用户展示拷贝文件的进I度时,传统做法是通过每次拷贝完成结束后去更新变量,再将变量转化为进度显示出来.其中经历了拷贝→>计算-→>显示→>拷贝->计算→>显示...直至拷贝结束.这样的程序架构及其的低效,必须在单次拷贝结束后才可以刷新当前拷贝进度,若可以将进程分支,一支单独的解决拷贝问题,一支单独的解决计算刷新间题,则程序效率会提升很多.

场景二:用阻塞方式去读取数据,实时需要发送数据的时候.例如在进行串口数据传输或者网络数据传输的时候,我们往往需要双向通信,当设置读取数据为阻塞模式时候,传统的单线程只能等到数据接收来临后才能冲过阻塞.再根据逻辑进行发送.当我们要实现随时发送、随时接收时,无法满足我们的业务需求.若可以将进程分支,一支单纯的处理接收数据逻辑,一支单纯的解决发送数据逻辑,就可以完美的实现功能.

基于以上场景描述,多线程编程可以完美的解决上述问题.

1、线程的概念

所谓线程࿰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/847280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三.三Vue 实现的精彩动画效果

在 Vue 开发中&#xff0c;我们可以利用<transition>组件来打造各种令人惊艳的动画效果。下面来详细看看这些有趣的动画效果及其实现代码。 一、缩放类效果 zoom-in&#xff08;整体放大进入&#xff09; <template><div><button click"isShow ! …

[数据集][目标检测]电力工地场景下的人头检测数据集VOC+YOLO格式7035张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7035 标注数量(xml文件个数)&#xff1a;7035 标注数量(txt文件个数)&#xff1a;7035 标注…

Dockershim 与 Containerd:两种容器运行时的故事

在不断发展的容器化世界中&#xff0c;两个关键组件经常被混淆&#xff1a;Dockershim 和 containerd。虽然它们在管理容器方面都发挥着重要作用&#xff0c;但它们的用途却截然不同。本文深入探讨了它们的功能&#xff0c;深入探讨了 Dockershim 和 containerd 之间的区别。 揭…

SpringBoot——全局异常处理

目录 异常 项目总结 新建一个SpringBoot项目 pom.xml Result&#xff08;通用的响应结果类&#xff09; MyBusinessException自定义异常类 GlobalExceptionHandler全局异常处理类 ExceptionController控制器 SpringbootExceptionApplication启动类 参考文章&#xff1a…

对比投入高成本自研推广系统,直接采用SaaS更有效益

推广分销作为一种有效的市场拓展方式&#xff0c;被越来越多的企业所采纳。部分企业会选择投入资源自研一套推广分销系统&#xff0c;但是其实最后发现几年过去了&#xff0c;投入了大量成本&#xff0c;系统仍然是一地鸡毛&#xff0c;还在定义一些基本的属性。 自研推广系统…

Web前端三大主流框架:Angular、React与Vue.js的深入探讨

在快速发展的Web前端领域&#xff0c;选择一款合适的框架对于提升开发效率、保证代码质量以及实现项目目标具有至关重要的作用。在众多前端框架中&#xff0c;Angular、React和Vue.js以其独特的优势和广泛的应用场景&#xff0c;成为了市场上的三大主流框架。本文将深入剖析这三…

08-使用HappyPack提升Webpack构建速度

使用HappyPack提升Webpack构建速度 笔记分享 在前端开发中&#xff0c;Webpack 是一种非常流行的模块打包工具。然而&#xff0c;随着项目规模的扩大和复杂度的增加&#xff0c;Webpack 的构建速度可能会成为一个瓶颈。为了提升构建速度&#xff0c;我们可以使用一些工具和优化…

基于4G工业路由器的信息发布系统物联网应用方案

随着物联网技术的快速发展&#xff0c;智能信息发布系统已成为城市管理和信息传播的重要工具。而4G工业路由器作为连接信息发布终端与云平台的关键设备&#xff0c;其在提升信息发布效率方面发挥着至关重要的作用。为了提升智能信息发布系统的效率和智能化水平&#xff0c;智联…

【RPG Maker MV 仿新仙剑 战斗场景UI (十)】

RPG Maker MV 仿新仙剑 战斗场景UI &#xff08;十&#xff09; 前言角色站位人物站位人物影子 前言 上一期完成了几个功能&#xff0c;虽然没有进行进一步的优化&#xff0c;但基础的功能已经完成&#xff0c;现在记录下已完成及未完成的功能&#xff1a; 战斗菜单 一级战斗菜…

python opencv运行报错

报错如下错误&#xff1a;The function is not implemented. Rebuild the library with Windows, GTK 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage 解决办…

PromptIR论文阅读笔记

MZUAI和IIAI在NIPS2023上的一篇论文&#xff0c;用prompt来编码degradation&#xff0c;然后用来guide restoration network&#xff0c;使得模型能够泛化到不同degradation types and levels&#xff0c;也就是说是一个模型一次训练能够应对多种degradation的unified model。文…

讲座PPT分享|医学人工智能开始进入黄金时代|24年6月·讲座速递·06-03

小罗碎碎念 这期推文想分享的是自己四月底受邀做的一个报告——主题是“人工智能在肿瘤领域的进展&人工智能在脊柱外科领域中的进展”。 先解释一下&#xff0c;为什么我一个研究肿瘤的&#xff0c;会去关注脊柱外科——因为受到了脊柱外科医生的邀请&#xff0c;去给他们…

PTR记录-系统架构师(五)

1、关于串行总线的说法中&#xff0c;正确的是&#xff08;&#xff09;。 A串行总线一般都是双全工总线&#xff0c;适宜于长距离传输数据 B串行总线传输的波特率是总线初始化时预先定义好的&#xff0c;使用中不可改变 C串行总线是按位&#xff08;bit&#xff09;传输数据…

每日练习——牛客周赛 Round 45

小紫的总分 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include<iostream> using namespace std; int main(){int a,b,c,d,e,sum;cin>>a>>b>>c>>d>>e;sumabcde;if(sum>100){ cout<<"YES";}else cout&…

MySQL之查询性能优化(二)

查询性能优化 慢查询基础:优化数据访问 查询性能低下最基本的原因是访问的数据太多。某些查询可能不可避免地需要筛选大量数据&#xff0c;但这并不场景。大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化。对于低效的查询&#xff0c;我们发现通过下面两个步骤…

初识Sass

1、Sass概述 Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种CSS预处理器&#xff0c;用于增强CSS的功能和灵活性。 定义与起源&#xff1a; Sass最初由Hampton Catlin设计&#xff0c;由Natalie Weizenbaum开发。它是对CSS3的一种扩充&#xff0c;允许…

家政预约小程序09小程序分享及海报分享

目录 1 设置弹窗2 制作海报总结 上一篇我们介绍了服务详情页面的开发&#xff0c;本篇介绍一下用户分享及海报分享的功能 1 设置弹窗 当用户点击分享按钮的时候&#xff0c;系统弹出弹窗界面&#xff0c;提供分享好友及分享海报的选项。选中页面组件&#xff0c;添加弹窗组件 …

nodeJs项目总结

文章目录 学习总结mongoose指令操作schema 对象将Shcema对象转化为数据模型操作数据库插入查询删除修改限制查询条数 模板引擎语法模版输出条件判断循环 子模版模版继承 项目Login主要步骤及逻辑身份认证session cookiejwt 学习总结 mongoose 指令 mongodb 数据库名 mongod…

了解 IPv4 和 IPv6 之间的区别?

在广阔的互联网环境中&#xff0c;设备之间的通信依赖于一组独特的协议来促进连接。在这些协议中&#xff0c;IPv4&#xff08;互联网协议第4版&#xff09;和IPv6&#xff08;互联网协议第6版&#xff09;是数字基础设施的支柱&#xff0c;能够跨网络传输数据。但是&#xff0…

基于WIN2016搭建MS2016 ALWAYS ON域控故障转移群集

基于WIN2016搭建MS2016 ALWAYS ON域控故障转移群集 一、前言1、Always On简介2、AD DC域控简介 二、部署实施1、部署环境简介2、搭建流程简介3、域控服务器安装及群集节点加域3.1、安装域控&#xff0c;安装同时会安装DNS系统3.2、执行安装&#xff0c;完成后重启服务器3.3、将…