ZLYSCJDSG 发表于 2020-6-2 13:50:52

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

比如有两个线程B1,B2;一个公用的数组a【200】【200】
怎么才可以在一个线程中将a【1】【1】申请为互斥对象

赚小钱 发表于 2020-6-2 14:43:29

本帖最后由 赚小钱 于 2020-6-2 14:50 编辑

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

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

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

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

以上两种情况,无优劣之分,适用于不同的场景,酌情使用。
页: [1]
查看完整版本: 问一下C语言多线程编程里如何将数组中的一个请求为互斥对象?