複製鏈接
請複製以下鏈接發送給好友

阻塞通信

鎖定
阻塞通信是標準通信模式、緩衝通信模式等。
套接字為例,在阻塞模式下,利用TCP協議發送一個報文時,如果低層協議沒有可用空間來存放用户數據,則應用進程將阻塞等待直到協議有可用的空間。而在非阻塞模式下,調用將直接返回而不需等待。在應用進程調用接收函數接收報文時,如果是在阻塞模式下,若沒有到達的數據,則調用將一直阻塞直到有數據到達或出錯;而在非阻塞模式下,將直接返回而不需等待。對於UDP協議而言,由於UDP沒有發送緩存,因此所有UDP協議即使在阻塞模式下也不會發生阻塞。對於面向連接的協議,在連接建立階段,阻塞與非阻塞也表現不一。在阻塞模式下,如果沒有連接請求到達,則等待連接調用將阻塞直到有連接請求到達;但在非阻塞模式下,如果沒有連接請求到達,等待連接調用將直接返回。
中文名
阻塞通信
外文名
Blocking communication
簡    介
利用TCP協議發送一個報文
模式類型
阻塞模式
發送媒介
TCP協議
對應類別
非阻塞通信
特點
MPI點到點的通信中,通信分為阻塞通信和非阻塞通信。
阻塞通信是指消息發送方的send調用需要接受方的recv調用的配合才可完成,包括:
1.標準通信模式
在MPI採用標準通信模式時,是否對發送的數據進行緩存是由MPI自身決定的,而不是由並行程序員來控制。
如果MPI決定緩存將要發出的數據,發送操作不管接收操作是否執行,都可以進行而且發送操作可以正確返回,而不要求接收操作收到發送的數據。
由於緩存數據是需要付出代價的,它會延長數據通信的時間,而且緩衝區也並不是總可以得到的,這樣MPI也可以不緩存將要發出的數據,這樣只有當相應的接收調用被執行後,並且發送數據完全到達接收緩衝區後發送操作才算完成。
2.緩衝通信模式
當用户對標準通信模式不滿意希望直接對通信緩衝區進行控制時可採用緩存通信模式。在這種模式下由用户直接對通信緩衝區進行申請使用和釋放,因此緩存模式下對通信緩衝區的合理與正確使用是由程序設計人員自己保證的
3.就緒通信模式
僅當對方的接受操作啓動並準備就緒時,才可發送數據。(其發送方式與標準發送完全一致,只不過向MPI環境傳遞一個額外信息:接收動作已經就緒,直接發就是。)
4.同步通信模式
不論接收端是否啓動了接收動作,發送端都可在任何時機啓動發送動作。但發送端需等待接收端的接收動作發送並開始接收數據之後才可以結束。
對於非阻塞通信,不必等到通信操作完全完成便可以返回,該通信操作可以交給特定的通信硬件去完成,在該通信硬件完成該通信操作的同時,處理機可以同時進行計算操作,這樣便實現了計算與通信的重疊。通過計算與通信的重疊,可以大大提高程序執行的效率。這一方法和通過異步I/O實現I/O與計算的重疊思路是完全一樣的。