- Schreibe eine Funktion
Send_ProcD(to,nin,xin,icomm)
welche nin
Double-Precision-Zahlen des Feldes xin zum Prozeß to sendet.
Beachte, daß der empfangende Prozeß to
im allgemeinen nicht weiß, wie lang das zu empfangende Datenpacket
sein wird.
- Schreibe eine Funktion
Recv_ProcD(from,nout,xout,maxbuf,icomm),
entsprechend zu E5, welche nout
Double-Precision-Zahlen in einem Feld xout
von Prozeß from empfängt.
Der empfangende Prozeß besitzt keinerlei Information
über die Länge des zu empfangenden Datenpackets, daher ist
nout ein Ausgabeparameter!
maxbuf beinhaltet die maximale Länge des Feldes xout.
- Teste die Funktionen aus E5 und E6 zuerst mit 2 Prozessen, sodaß
Prozeß 1 sendet und Prozeß 0 empfängt. Erweitere den Test mit
mehreren Prozessen.
- Kombiniere E5 und E6 zur Funktion
ExchangeD(yourid,nin,xin,nout,xout,maxbuf,icomm),
welche Double-Precision-Zahlen zwischen dem eigenen Prozeß und einem
anderen Prozeß yourid austauscht.
Die restlichen Parameter sind die gleichen wie in E5, E6.
Teste die Funktion mit 2 und mehr Prozessen.
Was war doch gleich ein Deadlock (S. 36)?