Articolo pubblicato sul n. 90 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nel novembre 1989
Amighevole:
Le nuove funzioni ADPmttb
(cfr. MC n. 88) presentate questo mese riguardano la
spedizione e ricezione di messaggi di tipo stringa e il
controllo del non determinismo. La funzione che ci
permetterà di spedire una qualsiasi stringa (null terminated)
ad un altro processo è la Send. Accetta tre soli parametri e
precisamente il modo di spedizione (MODE_SYNC, MODE_ASYNC
Receive(MODE_RVE, "Pluto", DataDiOggi); dove DataDiOggi è una stringa contenente appunto la data. Qualsiasi processo può eseguire a questo punto una: Send(MODE_RVE, "Pluto", variabile); per ottenere al suo ritorno una copia di DataDiOggi nella sua 'variabile' . Le rimanenti due funzioni, MultiReceive e MultiWait permettono di attendere eventi su più porte (massimo 5). Con la prima potremo effettivamente ricevere fino a 5 messaggi contemporaneamente (sempre di tipo stringa null terminated) con la seconda, di uso più generale, semplicemente aspettare su fino a 5 porte l'arrivo di un qualsiasi messaggio che poi preleveremo (se lo riterremo opportuno) con la funzione apposita (Receive, ReceiveBlock, ReceiveChar, ReceivePointer, ecc. ecc.). La sintassi in tutt'e due i casi è molto semplice. Per la MultiReceive dovremo indicare innanzitutto il modo di ricezione (il solito MODE_WAIT o MODE_NOWAIT). il numero di porte su cui operare e poi una sequenza di coppie "porta, variabile» come nelle normali Receive. Ad esempio con la linea: MultiReceive(MODE_WAIT, 3, "Pippo", varl, "Pluto", var2, "Minnie", var3); aspetteremo su almeno una delle tre porte citate messaggi di tipo stringa da porre nelle variabili indicate. Da notare che se tutt'e tre le porte contengono messaggi, al ritorno dalla funzione troveremo in ogni variabile' il relativo messaggio arrivato, se arriva un solo messaggio ne troveremo uno nella variabile corrispondente (stringa vuota nelle altre) e così via per ogni possibile combinazione: è una vera e propria lettura parallela delle n porte indicate (con 'n', ripeto, minore o uguale a 5). Indicando MODE_NOWAIT come primo parametro, avremo l'effetto di ritrovare tutte stringhe vuote se al momento della chiamata tutte le porte indicate non contengono messaggi. La sintassi della MultiWait è un tantino più semplice: si indica solo il numero delle porte su cui operare e la lista delle porte interessate. Da questa funzione si torna non appena una o più porte presentano messaggi in arrivo. Tutto qui. Impaginato originale...
Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui |