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

嵌入式开发学习———Linux环境下IO进程线程学习(六)

互斥与同步

互斥:确保多个线程或进程不会同时访问共享资源,避免数据竞争。
同步:协调线程或进程的执行顺序,确保某些操作按预期顺序发生。


互斥锁(Mutex)

用于保护共享资源,同一时间仅允许一个线程访问。

#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;// 加锁
pthread_mutex_lock(&mutex);
// 临界区代码
pthread_mutex_unlock(&mutex);

信号量(Semaphore)

用于控制多线程/进程对资源的访问数量,支持计数。

#include <semaphore.h>
sem_t sem;
sem_init(&sem, 0, 1); // 初始值为1(二进制信号量)sem_wait(&sem); // P操作(申请资源)
// 临界区代码
sem_post(&sem); // V操作(释放资源)

条件变量(Condition Variable)

用于线程间通信,当某条件满足时唤醒等待的线程。

#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;// 等待条件
pthread_mutex_lock(&mutex);
while (条件不满足) {pthread_cond_wait(&cond, &mutex);
}
pthread_mutex_unlock(&mutex);// 唤醒等待线程
pthread_cond_signal(&cond); // 唤醒一个线程
// 或 pthread_cond_broadcast(&cond); // 唤醒所有线程

牛客网:

http://www.dtcms.com/a/320401.html

相关文章:

  • 了解大型语言模型:力量与潜力
  • SpringBoot学习日记 Day5:解锁企业级开发核心技能
  • PCIe Base Specification解析(九)
  • 多线程的使用
  • 2025 最新 ECharts 下载、安装与配置教程
  • Linux 中断系统全览解析:从硬件到软件的全路线理解
  • Oracle 19C In-Memory 列存储技术测试
  • Qwen系列模型
  • [链表]两两交换链表中的节点
  • 【感知机】感知机(perceptron)学习算法的对偶形式
  • aurora rx没有ready信号
  • 哈希表——指针数组与单向链表的结合
  • linux顽固进程查看并清理
  • Java包装类详解与应用指南
  • SupChains技术团队:需求预测中减少使用分层次预测(五)
  • 目标检测数据集 - 眼睛瞳孔检测数据集下载「包含COCO、YOLO两种格式」
  • 菜鸟笔记007 [...c(e), ...d(i)]数组的新用法
  • (数据结构)顺序表实现-增删查改
  • java中override和overload的区别
  • 敏捷总结-上
  • 如果获取Docker镜像
  • Flink与Kafka核心源码详解-目录
  • 中国北极圈战略部署
  • 有密钥保护的物流跟踪、图书馆管理ISO15693标签ICODE SLIX2读写C#源码
  • 跨学科视域下的深层语义分析与人类底层逻辑一致性探索
  • 计数组合学7.15(Schur 函数的经典定义 )
  • 多模态融合(Multimodal Fusion)
  • 神策埋点是什么
  • C语言:单链表学习
  • 城市道路场景下漏检率↓76%:陌讯多模态融合算法在井盖缺失识别中的实践