鱼C论坛

 找回密码
 立即注册
查看: 2032|回复: 1

问一下C语言多线程编程里如何将数组中的一个请求为互斥对象?

[复制链接]
发表于 2020-6-2 13:50:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如有两个线程B1,B2;一个公用的数组a【200】【200】
怎么才可以在一个线程中将a【1】【1】申请为互斥对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 14:43:29 | 显示全部楼层
本帖最后由 赚小钱 于 2020-6-2 14:50 编辑

不是很理解,什么叫做互斥对象。

多线程在访问同一个对象的时候,只要使用同一个 pthread_mutex , 在 pthread_mutex_lock & pthread_mutex_unlock 中间使用,就可以保证线程安全。

如果期望保证 a[1][1] 在多线程,访问是线程安全的,有两种方法:

1. 申请一个 pthread_mutex lock , 只要是对 a 的访问(无论读写,也无论读写 a 的哪个索引),都使用 lock 加锁保护起来
2. 构建一个 200 x 200 个 pthread_mutex  的数组 pthread_mutex locks[200][200]。对 a[m][n] 的访问都使用 locks[m][n] 保护起来

以上两种情况,无优劣之分,适用于不同的场景,酌情使用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 19:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表