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

学习嵌入式第二十六天

进程线程

1.进程的概念 
2.进程 和 程序
硬盘中程序 ,加载到内存中,运行起来,就是进程

创建线程 pthread_create   
            posix thread create 
   线程执行 ---体现在线程执行函数 (回调函数)
   线程退出 ---pthread_exit()  
           线程结束方式:
           1.pthread_exit   //pthread_join
           2.从线程执行函数中return  //此时效果等价于pthread_exit 
           3.pthread_cancel  //线程可以被取消 
           4.任何一个线程调用了exit 
             或者 
             主线程 (main函数) return 
            都会造成 进程结束  
   线程资源回收 ---pthread_join
   
   
    int pthread_cancel(pthread_t thread);
    功能:
        发送 取消的请求 
    参数:
        thread   //表示要发送的线程的tid号 
    返回值:
        成功 0
        失败 错误码 
        
        

   线程资源回收 
   1.pthread_join    //需要自己回收  ---线程的属性 (可结合性)  --- 一般是子线程 在较短时间内运行完 
   2.pthread_detach  //可分离属性    ---子线程运行很久才结束 ---  设置分离属性 
  
  
  函数:
     pthread_detach(); 
     
    int pthread_detach(pthread_t thread);
    功能:
         分离线程 
    参数:
        thread 要分离的线程的tid
    返回值:
          成功 0
        失败 错误码 
1.创建 -- pthread_create 
2.执行 -- 线程执行函数 
3.退出 -- pthread_exit 
          return  //线程执行函数中 
          pthread_cancel 
          exit() //return 从main   
4.资源回收 
       可结合性 --- pthread_join    //这种用于 ,线程任务较短,主线程需要关心子线程状态 
       可分离性 --- pthread_detach  //子程序执行任务较长,主线程也不需要关心子线程状态 

各自特点 (优缺点)

 1.创建 和 调度
  线程 
      创建速度快 
      调度速度快 
      
      //并发程度 更高 
      
 2. 安全性 
    
    线程 
        好处:
        共享了进程的数据空间 
        共享数据方面 方便 
        缺点:
          安全性不好,带来资源竞争 
        进程空间相互独立 
        好处,
            安全性好 
        缺点:
            进程间共享数据不方便  进程间通信   (管道,信号,共享内存)
在C语言中,互斥锁是一种同步机制,用于防止多个任务(线程或进程)同时访问共享资源,从而避免数据竞争和一致性问题。互斥锁在多线程环境中非常重要,因为它们确保在任意时刻只有一个线程可以访问特定的代码段或数据。

定义互斥锁:
    pthread_mutex_t   mutex;
    互斥锁类型        互斥锁变量 内核对象 
    
   初始化锁
    pthread_mutex_init(); //初始化一把锁    
    
   
   加锁                      //加锁 加在 要访问临界资源的地方 
       pthread_mutex_lock(); //上锁 
   解锁 
       pthread_mutex_unlock(); //解锁  临界资源访问之后就解开
   销毁
       pthread_mutex_destroy();//销毁一把锁 
在C语言中,死锁是一种特定类型的进程同步问题,当两个或多个进程在执行过程中因争夺资源而造成的一种僵局。在这种僵局中,每个进程都在等待其他进程释放资源,而如果这些资源都已被其他进程占有,那么没有一个进程能够向前推进,这就形成了死锁。

死锁通常涉及以下四个必要条件,这四个条件必须同时满足才可能导致死锁:

  1. 互斥条件:资源不能被多个进程共享,一次只能由一个进程使用。
  2. 占有和等待条件:进程至少持有一个资源,并且正在等待获取其他进程持有的资源。
  3. 不可剥夺条件:已经分配给一个进程的资源,在未使用完之前不能被强行夺走,只能由该进程自己释放。
  4. 循环等待条件:存在一种进程资源的循环等待关系,即进程间形成了一个闭环,每个进程都在等待下一个进程所占有的资源。

相关文章:

学习嵌入式第二十六天

进程线程 1.进程的概念 2.进程 和 程序 硬盘中程序 ,加载到内存中,运行起来,就是进程 创建线程 pthread_create posix thread create 线程执行 ---体现在线程执行函数 (回调函数) 线程退出 ---pthread_exit() …...

speech语音audio音频

在信号处理和语言技术领域,speech 和 audio 是两个相关但不同的概念。它们有各自的定义和应用场景。以下是对这两个术语的详细解释: 1. Speech(语音) Speech 主要指的是人类说话时产生的声音。它是人类语言交流的一种主要形式&a…...

最常用的正则表达式规则和语法

正则表达式(Regular Expression,简称 regex)是一种用于匹配字符串的强大工具。它使用特定的语法规则来定义字符串模式,可以用来搜索、替换、验证字符串等。以下是一些常用的正则表达式规则和语法: 1. 基本字符匹配 . :匹配任意单个字符(除了换行符)。 示例:a.c 可以匹…...

Datawhale X 魔搭 AI夏令营第四期-魔搭生图task1学习笔记

根据教程提供的链接,进入相应文章了解魔搭生图的主要工作是通过对大量图片的训练,生成自己的模型,然后使用不同的正向、反向提示词使模型输出对应的图片 1.官方跑baseline教程链接:Task 1 从零入门AI生图原理&实践 2.简单列举一下赛事的…...

WPF中XAML相对路径表示方法

在WPF XAML中,相对路径是一种非常实用的方式来引用资源文件,如图像、样式表和其他XAML文件。相对路径可以帮助您构建更加灵活和可移植的应用程序,因为它允许资源文件的位置相对于XAML文件的位置进行定位。 相对路径的表示方法 在XAML中&…...

操作系统内存管理技术详解

操作系统内存管理技术详解:第一部分 引言 操作系统作为计算机系统的核心组件,负责管理硬件资源、提供用户接口和运行应用程序。在操作系统的众多功能中,内存管理无疑是最为关键的技术之一。本文将深入探讨操作系统内存管理的背后技术&…...

python之numpy(2 创建矩阵)

numpy创建矩阵 前面提到,numpy主要是针对数组和矩阵的操作。下面我们分别创建数组和矩阵。 import numpy as np x0np.array([1,2,3,4]) x1np.array([[1,2,3,4],[1,2,3,4]]) print(x0,x1,sep\n) 在numpy中,使用array创建数组和矩阵。其中,创…...

git stage 和 git unstage

无意间遇到 git stage 和 git unstage,感觉有点陌生,简单了解一下这两个概念。 在 Git 中,stage 和 unstage 是与暂存区操作相关的术语,它们用于管理文件的状态,决定哪些更改会在下次的提交中。 1. git stage git s…...

C#使用反射和特性的优缺点

使用反射(Reflection)和特性(Attributes)在C#中有其特定的应用场景,同时也带来了一些优缺点: 反射的优点: 动态性:反射允许程序在运行时查询和操作对象的类型信息,提供…...

C语言:字符串函数strcat

该函数用于字符串拼接。 使用方法如下&#xff1a; #include<stdio.h> #include<string.h>int main() {char str[20] "abcd";char str1[] "1234";//strcat(str,str1);//不安全&#xff0c;所以用strcat_sstrcat_s(str, 20, str1);printf(&…...

haproxy总结与实验

一、负载均衡 1.1 简述负载均衡 在高并发的业务场景下&#xff0c;解决单个节点压力过大&#xff0c;导致Web服务响应过慢&#xff0c;特别是严重的情况下导致服务瘫痪&#xff0c;无法正常提供服务的问题&#xff0c;而负载均衡的目的就是为了维护系统稳定可靠。负载均衡&…...

VS实用调试技巧(程序员的必备技能)

调试的重要性 在我们写代码的时候&#xff0c;如果程序出现了bug&#xff0c;那么下一步就是找到bug并修复bug!而这个找问题的过程就被称为调试&#xff08;英文叫debug&#xff0c;消灭bug的意思&#xff09;。 调试能观察到程序内部执行的细节&#xff0c;可以增加程序员对…...

怎样卸载python

python卸载干净的具体操作步骤如下&#xff1a; 1、首先打开电脑左下角开始菜单&#xff0c;点击“运行”选项&#xff0c;输入“cmd”。 2、输入“python --version”&#xff0c;得到一个程序的版本&#xff0c;按回车键。 3、点击下图程序。 4、然后在该页面中点击“uninst…...

SQL注入靶场攻击——sqli-labs

一、概述 SQL注入&#xff08;SQL Injection&#xff09;是发生在web程序中数据库层的安全漏洞&#xff0c;是比较常用的网络攻击方式之一&#xff0c;它不是利用操作系统的BUG来实现攻击&#xff0c;而是针对程序员编写时的疏忽&#xff0c;通过SQL语句&#xff0c;实现无账号…...

Conda 环境打包与私有化部署指南

Conda 环境打包与私有化部署指南 本指南旨在帮助用户将已创建的 Conda 环境打包并在目标服务器上私有化部署&#xff0c;适用于环境不能直接访问外网或需要快速迁移的场景。 1. 环境打包 在源服务器上&#xff0c;使用 conda pack 工具将已创建的 Conda 环境打包成一个归档文…...

网页版IntelliJ IDEA部署

在服务器部署网页 IntelliJ IDEA 引言 大家好&#xff0c;我是小阳&#xff0c;今天要为大家带来一个黑科技——如何在云端部署和使用WEB版的IntelliJ IDEA&#xff0c;让你在任何地方都可以随心所欲地进行Java开发。这个方法特别适合那些用着老旧Windows电脑&#xff0c;部署…...

科创微应用平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;场地信息管理&#xff0c;场地类型管理&#xff0c;预约参观管理&#xff0c;场地预约管理&#xff0c;活动信息订单&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首…...

grom接入Prometheus,grafana

在同级目录下分别创建 docker-compose.yml&#xff0c;与prometheus.yml 配置文件 version: 3.8services:prometheus:image: prom/prometheuscontainer_name: prometheusports:- "9090:9090" # Prometheus Web UI 端口volumes:- ./prometheus.yml:/etc/prometheus…...

C++结构体指针强制转换以处理电力系统IEC103报文

前言 最近依旧是开发规约解析工具的103篇&#xff0c;已经完成了通用分类服务部分的解析&#xff0c;现在着手开始搞扰动数据传输&#xff0c;也就是故障录波的传输。 在103故障录波&#xff08;扰动数据&#xff09;的报文中&#xff0c;数据是一个数据集一个数据集地存放&a…...

vue3.0脚手架、路由、Element Plus安装案例:收录于Vue 3.0 后台管理系统案例

目录 环境配置 Vue 3.0 脚手架&#xff08;Vite&#xff09;安装 node版本查询与切换 创建一个vue应用 Vue Router安装 安装vue-router4 配置路由 安装配置 展示路由 Element UI安装 安装element-plus 引入element-plus 使用element-plus 用户登录 环境配置 Vue 3…...

WechatFerry实战指南:5步构建高效微信机器人自动化系统

WechatFerry实战指南&#xff1a;5步构建高效微信机器人自动化系统 【免费下载链接】wechatferry 基于 WechatFerry 的微信机器人底层框架 项目地址: https://gitcode.com/gh_mirrors/wec/wechatferry WechatFerry是一个基于Node.js生态的微信机器人底层框架&#xff0c…...

联想M920x黑苹果终极指南:从零构建完美macOS系统

联想M920x黑苹果终极指南&#xff1a;从零构建完美macOS系统 【免费下载链接】M920x-Hackintosh-EFI Hackintosh Opencore EFIs for M920x 项目地址: https://gitcode.com/gh_mirrors/m9/M920x-Hackintosh-EFI 你是否想让联想M920x这款紧凑型主机运行macOS系统&#xff…...

Vue3+AI聊天室:如何实现消息自动滚动和流式响应?

Vue3AI聊天室&#xff1a;消息自动滚动与流式响应的工程实践 引言&#xff1a;当Vue3遇见AI对话 在构建现代化AI聊天应用时&#xff0c;流畅的交互体验往往比功能堆砌更重要。想象这样一个场景&#xff1a;用户发送问题后&#xff0c;界面立即开始逐字显示AI回复&#xff0c;同…...

手机拍照为啥总感觉差点意思?聊聊藏在ISP里的那些‘魔法’算法(从RawNR到TNR)

手机拍照为啥总感觉差点意思&#xff1f;聊聊藏在ISP里的那些‘魔法’算法&#xff08;从RawNR到TNR&#xff09; 每次看到别人用同款手机拍出的大片&#xff0c;再看看自己相册里灰蒙蒙的夜景照&#xff0c;是不是总觉得少了点什么&#xff1f;这背后其实藏着一整套名为ISP&am…...

探索Unity全功能的开源方案:UniHacker跨平台功能扩展工具深度指南

探索Unity全功能的开源方案&#xff1a;UniHacker跨平台功能扩展工具深度指南 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker Unity作为游戏开发领域的行业标…...

3步在Mac上免费运行Stable Diffusion的终极指南

3步在Mac上免费运行Stable Diffusion的终极指南 【免费下载链接】MochiDiffusion Run Stable Diffusion on Mac natively 项目地址: https://gitcode.com/gh_mirrors/mo/MochiDiffusion 还在为寻找合适的Mac AI绘画工具而烦恼吗&#xff1f;想要完全离线生成惊艳的AI艺术…...

【AI重塑科研】无需通读全文,三步教你用大模型高效产出文献综述

1. 为什么你需要AI辅助文献综述&#xff1f; 每次打开文献库看到上百篇待读论文就头皮发麻&#xff1f;我完全理解这种感受。去年准备开题报告时&#xff0c;导师要求我两周内完成50篇核心文献的综述&#xff0c;当时差点崩溃。直到我发现用大模型处理文献可以节省90%的时间&am…...

别再手动搬虚拟机了!vSphere DRS全自动负载均衡保姆级配置指南(附规则避坑)

别再手动搬虚拟机了&#xff01;vSphere DRS全自动负载均衡保姆级配置指南&#xff08;附规则避坑&#xff09; 想象一下这样的场景&#xff1a;凌晨三点&#xff0c;你被监控告警惊醒——某台ESXi主机CPU负载飙升至95%&#xff0c;而同一集群内其他主机资源利用率不足30%。你不…...

腾讯混元翻译模型实战:跨境电商多语言商品描述生成案例

腾讯混元翻译模型实战&#xff1a;跨境电商多语言商品描述生成案例 1. 项目背景与价值 跨境电商企业面临一个共同挑战&#xff1a;如何高效地将商品信息翻译成多种语言。传统人工翻译成本高、周期长&#xff0c;而通用翻译工具又难以满足电商场景的专业需求。 腾讯混元翻译模…...

3步解锁数据自由:WeChatMsg让聊天记录成为数字资产

3步解锁数据自由&#xff1a;WeChatMsg让聊天记录成为数字资产 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…...