文章插图
相交进程之间的关系主要有两种,同步与互斥 。所谓互斥,是指散步在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它 们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行 。所谓同步,是指散步在不同进程之间的若干程序片断,它们的运行必须严格按照规定的 某种先后次序来运行,这种先后次序依赖于要完成的特定的任务 。
显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步 。
也就是说互斥是两个线程之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!
总结:互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性 。但互斥无法限制访问者对资源的访问顺序,即访问是无序的 。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问 。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的 。少数情况是指可以允许多个访问者同时访问资源 。
【比较:读写锁和互斥锁】
读写锁特点:
1)多个读者可以同时进行读 2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行) 3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)
互斥锁特点:
一次只能一个线程拥有互斥锁,其他线程只有等待
互斥锁
pthread_mutex_init()
pthread_mutex_lock()
pthread_mutex_unlock()
读写锁
pthread_rwlock_init()
pthread_rwlock_rdlock()
pthread_rwlock_wrlock()
pthread_rwlock_unlock()
条件变量
pthread_cond_init()
pthread_cond_wait()
pthread_cond_signal()
推荐阅读
- 宝宝锁骨上有个疙瘩是什么原因?
- 典雅外形下却有最新科技,华为青稞Q7智能锁体验
- 颈椎不好用什么枕头比较好
- 早上吃什么比较养胃,推荐五种早餐
- 日本茶道比较有名的茶具茶器
- Apache与Nginx的优缺点比较
- MySQL 读写分离环境搭建
- 苹果怎么存放比较好?
- 淘宝直播开播时间重要吗 淘宝直播一天播几个小时比较好
- 怀孕可以吃鳜鱼吗?怀孕吃什么比较好