java 進程間通信,Linux進程間同步和通信,linux進程間的同步方法

 2023-10-20 阅读 16 评论 0

摘要:進程間通訊(IPC)方法主要有以下幾種:管道/FIFO/共享內存/消息隊列/信號1.管道中還有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子進程通訊,命名管道可用于非父子進程,命名管道就是FIFO,管道是先進先出的通訊

進程間通訊(IPC)方法主要有以下幾種:

管道/FIFO/共享內存/消息隊列/信號

1.管道中還有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子進程通訊,命名管道可用于非父子進程,命名管道就是FIFO,管道是先進先出的通訊方式

java 進程間通信。2.消息隊列是用于兩個進程之間的通訊,首先在一個進程中創建一個消息隊列,然后再往消息隊列中寫數據,而另一個進程則從那個消息隊列中取數據。需要注意的是,消息隊列是用創建文件的方式建立的,如果一個進程向某個消息隊列中寫入了數據之后,另一個進程并沒有取出數據,即使向消息隊列中寫數據的進程已經結束,保存在消息隊列中的數據并沒有消失,也就是說下次再從這個消息隊列讀數據的時候,就是上次的數據!!!!

3.信號量,它與WINDOWS下的信號量是一樣的,所以就不用多說了

4.共享內存,類似于WINDOWS下的DLL中的共享變量,但LINUX下的共享內存區不需要像DLL這樣的東西,只要首先創建一個共享內存區,其它進程按照一定的步驟就能訪問到這個共享內存區中的數據,當然可讀可寫

以上幾種方式的比較:

linux 多線程編程?1.管道:速度慢,容量有限,只有父子進程能通訊

2.FIFO:任何進程間都能通訊,但速度慢

3.消息隊列:容量受到系統限制,且要注意第一次讀的時候,要考慮上一次沒有讀完數據的問題

4.信號量:不能傳遞復雜消息,只能用來同步

shell進程,5.共享內存區:能夠很容易控制容量,速度快,但要保持同步,比如一個進程在寫的時候,另一個進程要注意讀寫的問題,相當于線程中的線程安全,當然,共享內存區同樣可以用作線程間通訊,不過沒這個必要,線程間本來就已經共享了同一進程內的一塊內存

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/152213.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息