问一下C语言多线程编程里如何将数组中的一个请求为互斥对象?
比如有两个线程B1,B2;一个公用的数组a【200】【200】怎么才可以在一个线程中将a【1】【1】申请为互斥对象 本帖最后由 赚小钱 于 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]