某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的,线程间不需要知道彼此的存在。
在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问,线程间知道彼此的存在。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源
1.互斥锁是为上锁而优化的;条件变量是为等待而优化的; 信号量既可用于上锁,也可用于等待,因此会有更多的开销和更高的复杂性。
2.互斥锁,条件变量都只用于同一个进程的各线程间,而信号量可用于不同进程间的同步。当信号量用于进程间同步时,要求信号量建立在共享内存区。
3.读写锁与互斥量类似,不过读写锁允许更高的并行性。读写锁也叫做共享-独占锁,当读写锁以读模式锁住时,它是以共享模式锁住的;当他以写模式锁住时,它是以独占模式锁住的。
1.进程有自己独立的堆和栈,都不共享,是操作系统调度的基本单位
2.线程有自己独立的栈和共享的堆,是cpu调度的基本单位
3.协程有自己独立的栈和共享的堆,由程序员在代码里显示调度。
协程的优点:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184988.html原文链接:https://javaforall.cn