互斥:
相互排斥,表示线程对共享资源的访问时相互排斥的,即不能同时操作(一个线程对共享资源写时,另外一个线程不能再对这个共享资源进行读写),保证线程的安全,互斥不能保证 线程执行的先后顺序
实现互斥的方式:
互斥锁
读写锁
线程信号量
同步:
包含了互斥,即既保证了线程的安全,又能保证线程执行的先后顺序
实现同步的方式:
条件变量
线程信号量
互斥锁:
互斥锁的数据类型:pthread_mutex_t
互斥锁是一种加锁的方法来控制对共享资源的访问。同一时刻只能由一个线程掌握某个互斥锁(就是有一把互斥锁),一个线程对共享资源上锁了,其他线程希望上锁一个已经上了互 斥锁的共享资源,那么这些线程将会阻塞,直到上锁的线程释放互斥锁为止。
通俗的解释就是:某个线程对共享资源上了某把互斥锁,其他线程想重新用这把互斥锁上锁,那这些线程将会阻塞,直到上锁的线程将这把互斥锁释放为止。
互斥锁的创建和销毁:
参数:
mutex:要创建的那把互斥锁(互斥锁可以创建多把)
mutexattr:互斥锁创建方式
上锁和解锁:
互斥锁的整体使用流程:
1. 创建互斥锁
2. 对共享资源枷锁
3. 对共享资源解锁
4. 释放互斥锁
注意:一把互斥锁就和某个共享资源绑定。如果有多个共享资源,可以定义多把互斥锁。建议不要把互斥锁定义为全局变量。
互斥锁属性创建和销毁:
互斥锁也有很多属性,和线程一样,都有一个结构来定义这些属性(pthread_mutexattr_t),如进程共享属性、互斥锁的类型
互斥锁进程共享属性:
互斥锁的类型:
标签:同步,创建,共享资源,互斥,线程,上锁,属性 From: https://www.cnblogs.com/zj-studyrecoding/p/17156140.html