news 2026/1/16 8:06:06

线程控制(互斥相关)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线程控制(互斥相关)

一,互斥

1.概念

(1)互斥:在多线程中对临界资源的排他性访问。

(2)临界资源:在多线程中,会对这个资源进行读写操作的全局变量,文件,设备。

(3)排他访问:在多线程中,只能有一个线程进行读写操作。

2.用途

问题:

th1,th2, 是两个线程,是并发运行。也就是代码在运行时,是穿插进行的。

如果A++,这个指令翻译成汇编是3句(至少)。在一次线程的调度,这3句汇编,不一定一次性执

行。也就是说可呢个th1 执行了 1,2步,就切换到th2 执行。这个时候就会发生错误(数据的一致行

性出现问题)。

解决方案:

定义互斥锁 ==》初始化锁 ==》加锁 ==》解锁 ==》销毁

相关函数:

1.定义

pthread_mutex_t mutex;

2.初始化锁

int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *attr)

功能:将已经定义好的互斥锁初始化。

参数:mutex 要初始化的互斥锁

atrr 初始化的值,一般是NULL表示默认锁

返回值:成功 0 ;失败 非零

3.加锁

int pthread_mutex_lock(pthread_mutex_t *mutex)

功能:用指定的互斥锁开始加锁代码

加锁后的代码到解锁部分的代码属于原子操作;

在加锁期间其他进程/线程都不能操作该部分代码;

如果该函数在执行的时候,mutex已经被其他部分使用则代码阻塞。

参数: mutex 用来给代码加锁的互斥锁

返回值:成功 0 ;失败 非零

原子操作: 在线程的一次调度中,这段代码必须完成,不能发生线程调度。

4.解锁

int pthread_mutex_unlock(pthread_mutex_t *mutex)

功能:将指定的互斥锁解锁。

解锁之后代码不再排他访问,一般加锁解锁同时出现。

参数:用来解锁的互斥锁

返回值:成功 0; 失败 非零

5.销毁

int pthread_mutex_destroy(pthread_mutex_t *mutex)

功能:使用互斥锁完毕后需要销毁互斥锁

参数:mutex 要销毁的互斥锁

返回值:成功 0; 失败 非零

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/28 6:09:15

NVIDIA Project DIGITS:技术架构解析与行业解决方案全景

一、革命性技术架构深度解析 1. GB10超级芯片的异构创新 Project DIGITS的核心是NVIDIA GB10 Grace Blackwell超级芯片,这是一款真正的片上系统(SoC),通过三大突破性设计实现了桌面级Petaflop算力:NVLink-C2C芯片级互连:传统CPU与…

作者头像 李华
网站建设 2025/12/27 23:43:07

从适配到共建:密瓜智能 HAMi × 沐曦 GPU 完成兼容互认

作为一个活跃的开源项目,HAMi 由来自 15 国家、350 贡献者共同维护,已被 200 企业与机构在实际生产环境中采纳,具备良好的可扩展性与支持保障。产品兼容互认 近日,密瓜智能 与 沐曦集成电路(上海)股份有限公…

作者头像 李华
网站建设 2025/12/27 23:43:05

基于springboot二手车交易市场管理系统

基于Spring Boot的二手车交易市场管理系统是一个功能全面、用户友好、安全可靠的在线二手车交易平台。以下是对该系统的详细介绍: 一、系统架构与技术栈 后端:采用Spring Boot框架作为后端开发工具,负责处理业务逻辑,如车辆信息…

作者头像 李华
网站建设 2025/12/27 23:43:03

Python和PHP学哪个比较好?

Python和PHP的选择,核心取决于你的学习目标和应用场景。PHP是老牌Web开发语言,轻量高效,适配中小型网站快速搭建;Python则是全能型语言,覆盖Web、数据分析、AI 等多领域,那么Python和PHP学哪个比较好?详细内容请看下文…

作者头像 李华
网站建设 2025/12/27 20:23:24

Python大数据使用Vue.js构建的大数据分析与可视化系统_m1sf2x1m_c008

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 Python大数据使用Vue.js构建的大数据分析与可视化系统_m1sf2x1m_c008 项目简…

作者头像 李华