面试官:说说进程间通信和线程间通信的几种方式及区别 今天药忘吃喽~ 2022-09-17 03:24 182阅读 0赞 点击上方“Java基基”,选择“设为星标” 做积极的人,而不是积极废人! 每天 **14:00** 更新文章,每天掉亿点点头发... 源码精品专栏 * [原创 | Java 2021 超神之路,很肝~][_ Java 2021] * [中文详细注释的开源项目][Link 1] * [RPC 框架 Dubbo 源码解析][RPC _ Dubbo] * [网络应用框架 Netty 源码解析][Netty] * [消息中间件 RocketMQ 源码解析][RocketMQ] * [数据库中间件 Sharding-JDBC 和 MyCAT 源码解析][Sharding-JDBC _ MyCAT] * [作业调度中间件 Elastic-Job 源码解析][Elastic-Job] * [分布式事务中间件 TCC-Transaction 源码解析][TCC-Transaction] * [Eureka 和 Hystrix 源码解析][Eureka _ Hystrix] * [Java 并发源码][Java] [来源:blog.csdn.net/liyue98/ article/details/80112246][blog.csdn.net_liyue98_ article_details_80112246] * [进程和线程的区别:][Link 2] * [通信方式之间的差异][Link 3] * [一、进程间的通信方式][Link 4] * [管道(pipe):][pipe] * [有名管道(namedpipe) :][namedpipe_] * [信号量(semophore) :][semophore_] * [消息队列(messagequeue):][messagequeue] * [信号(sinal):][sinal] * [共享内存(shared memory):][shared memory] * [套接字(socket):][socket] * [二、线程间的通信方式][Link 5] [![298f10bd9ab65ffa4cd457540cfe3d4b.png][]][298f10bd9ab65ffa4cd457540cfe3d4b.png 1] -------------------- ## [进程和线程的区别:][Link 2] ## 对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品。 而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数据,而且拥有自己的栈空间,拥有独立序列。 共同点:它们都能提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点。线程执行开销比较小,但不利于资源的管理和保护,而进程相反。同时,线程适合在SMP机器上运行,而进程可以跨机器迁移。 他们之间根本区别在于 多进程中每个进程有自己的地址空间,线程则共享地址空间。所有其他区别都是因为这个区别产生的。比如说: 1. 速度。线程产生的速度快,通讯快,切换快,因为他们处于同一地址空间。 2. 线程的资源利用率好。 3. 线程使用公共变量或者内存的时候需要同步机制,但进程不用。 而他们通信方式的差异也仍然是由于这个根本原因造成的。 > 推荐下自己做的 Spring Boot 的实战项目: > > https://github.com/YunaiV/ruoyi-vue-pro ## [通信方式之间的差异][Link 3] ## 因为那个根本原因,实际上只有进程间需要通信,同一进程的线程共享地址空间,没有通信的必要,但要做好同步/互斥,保护共享的全局变量。 而进程间通信无论是信号,管道pipe还是共享内存都是由操作系统保证的,是系统调用. > 推荐下自己做的 Spring Cloud 的实战项目: > > https://github.com/YunaiV/onemall ## [一、进程间的通信方式][Link 4] ## ### [管道(pipe):][pipe] ### 管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 ### [有名管道(namedpipe) :][namedpipe_] ### 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 ### [信号量(semophore) :][semophore_] ### 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。 ### [消息队列(messagequeue):][messagequeue] ### 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。 ### [信号(sinal):][sinal] ### 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。 ### [共享内存(shared memory):][shared memory] ### 共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。 ### [套接字(socket):][socket] ### 套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同设备及其间的进程通信。 ## [二、线程间的通信方式][Link 5] ## **锁机制:包括互斥锁、条件变量、读写锁** * 互斥锁提供了以排他方式防止数据结构被并发修改的方法。 * 读写锁允许多个线程同时读共享数据,而对写操作是互斥的。 * 条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。 **信号量机制(Semaphore):包括无名线程信号量和命名线程信号量** **信号机制(Signal):类似进程间的信号处理** 线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。 -------------------- -------------------- 欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,**长按下方二维码噢**: ![2e668ca8cba2bbd6b8cc09a8208e01d8.png][] 已在知识星球更新源码解析如下: [![d08fa50bd88b1c2551bfc0b4d6129667.png][]][_ Java 2021] [![e5b16f225b3e63d26d15f6bb777be03f.png][]][_ Java 2021] [![08d6f2131d302f4a03be88a402504f7c.png][]][_ Java 2021] [![383c6b65dfa671193fe48dba121f4f21.png][]][_ Java 2021] 最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。 提供近 3W 行代码的 SpringBoot 示例,以及超 6W 行代码的电商微服务项目。 获取方式:点“**在看**”,关注公众号并回复 **666** 领取,更多内容陆续奉上。 文章有帮助的话,在看,转发吧。 谢谢支持哟 (*^__^*) [_ Java 2021]: http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247487551&idx=1&sn=18f64ba49f3f0f9d8be9d1fdef8857d9&chksm=fa496f8ecd3ee698f4954c00efb80fe955ec9198fff3ef4011e331aa37f55a6a17bc8c0335a8&scene=21#wechat_redirect [Link 1]: https://blog.csdn.net/qq_40831778/article/details/102375778 [RPC _ Dubbo]: https://blog.csdn.net/uoyou138/article/details/107024989 [Netty]: https://blog.csdn.net/shishishilove/article/details/108051416 [RocketMQ]: http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247486256&idx=1&sn=81daccd3fcd2953456c917630636fb26&chksm=fa497481cd3efd97d9239f5eab060e49dea9876a6046eadba0effb878d2fb51f3ba5733e4c0b&scene=21#wechat_redirect [Sharding-JDBC _ MyCAT]: http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247486257&idx=1&sn=4d3c9c675f8833157641a2e0b48e498c&chksm=fa497480cd3efd96fe17975b0b8b141e87fd0a62673e6a30b501460de80b3eb997056f09de08&scene=21#wechat_redirect [Elastic-Job]: http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247486258&idx=1&sn=ae5665ae9c3002b53f87cab44948a096&chksm=fa497483cd3efd950514da5a37160e7fd07f0a96f39265cf7ba3721985e5aadbdcbe7aafc34a&scene=21#wechat_redirect [TCC-Transaction]: http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247486259&idx=1&sn=b023cf3dbf97e5da59db2f4ee632f5a6&chksm=fa497482cd3efd9402d71469f71863f71a6998b27e12ca2e00446b8178d79dcef0721d8e570a&scene=21#wechat_redirect [Eureka _ Hystrix]: http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247486260&idx=1&sn=8f14c0c191d6f8df6eb34202f4ad9708&chksm=fa497485cd3efd93937143a648bc1b530bc7d1f6f8ad4bf2ec112ffe34dee80b474605c22db0&scene=21#wechat_redirect [Java]: http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247486261&idx=1&sn=bd69f26aadfc826f6313ffbb95e44ee5&chksm=fa497484cd3efd92352d6fb3d05ccbaebca2fafed6f18edbe5be70c99ba088db5c8a7a8080c1&scene=21#wechat_redirect [blog.csdn.net_liyue98_ article_details_80112246]: https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247487551&idx=1&sn=18f64ba49f3f0f9d8be9d1fdef8857d9&scene=21#wechat_redirect [Link 2]: https://blog.csdn.net/weixin_34200628/article/details/90130280 [Link 3]: https://blog.csdn.net/u012068483/article/details/108059644 [Link 4]: https://blog.csdn.net/qq_41333582/article/details/83988370 [pipe]: https://blog.csdn.net/weixin_43853746/article/details/111411752 [namedpipe_]: https://blog.csdn.net/weixin_49638344/article/details/119652325 [semophore_]: https://blog.csdn.net/u013639526/article/details/23389597 [messagequeue]: https://blog.csdn.net/chenlintao_csdn/article/details/89430074 [sinal]: https://blog.csdn.net/guyan0319/article/details/90240731 [shared memory]: https://blog.csdn.net/afei__/article/details/84188548 [socket]: https://blog.csdn.net/qq_43503315/article/details/91358734 [Link 5]: https://blog.csdn.net/liubing8609/article/details/81700284 [298f10bd9ab65ffa4cd457540cfe3d4b.png]: /images/20220828/2794fa1a1354420ea4f8517b6a6f2c97.png [298f10bd9ab65ffa4cd457540cfe3d4b.png 1]: https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247487551&idx=1&sn=18f64ba49f3f0f9d8be9d1fdef8857d9&chksm=fa496f8ecd3ee698f4954c00efb80fe955ec9198fff3ef4011e331aa37f55a6a17bc8c0335a8&scene=21&token=899450012&lang=zh_CN#wechat_redirect [2e668ca8cba2bbd6b8cc09a8208e01d8.png]: /images/20220828/22bd8b4398814671bd8fcc2494cb888c.png [d08fa50bd88b1c2551bfc0b4d6129667.png]: /images/20220828/af49840157374d89ac21d1be5179290c.png [e5b16f225b3e63d26d15f6bb777be03f.png]: /images/20220828/6549f8ab9d304511a5c47db9821c3b37.png [08d6f2131d302f4a03be88a402504f7c.png]: /images/20220828/91c1aa75c84a4fad826f94ed4399a452.png [383c6b65dfa671193fe48dba121f4f21.png]: /images/20220828/39b9481ae1554f6d90ca659f5d1ce49b.png
还没有评论,来说两句吧...