int tid = pvm_mytid(); A `tid' változóba elhelyezi a taszk ID-t. int tid = pvm_parent(); A `tid' változóba elhelyezi a taszk szülőjének (az őt indító taszknak) az ID-ját. pvm_catchout(stdout); Ennek hatására amit a taszk gyerekei kiírnak, azt a taszk is kiírja. A pvm_spawn hívása előtt kell meghívni. A működéséhez az include-ok között az iostream (vagy stdio.h) a pvm3.h előtt legyen. int n; int *tids = new int[n]; int started = pvm_spawn("program", 0, PvmTaskDefault, 0, n, tids); Elindít `n' darab gyereket, mindegyik a `program' példánya lesz. A taszkok ID-jait a `tids' tömbbe helyezi el. A `started' változó értéke az elindult taszkok száma lesz; ha ez kisebb, mint `n', akkor hiba történt. char *args[] = {"arg1", "arg2", 0}; pvm_spawn("program", args, PvmTaskDefault, 0, n, tids); Ugyanaz, mint az előző, csak az új taszkok kapnak két parancssori paramétert, az `arg1' és `arg2'-t. pvm_perror("uzenet"); Megjeleníti a legutolsó PVM hiba leírását "uzenet: hiba" formában. int *tids; int tasks = pvm_siblings(&tids); Egy gyerektaszkban megadja azoknak a taszkoknak az ID-jait, amik ugyanannak a pvm_spawn hívásnak a hatására indultak el, mint a hívó taszk. A `tids' tömbbe kerülnek az ID-k, a `tasks' értéke a taszkok száma (azaz a tömb mérete) lesz. pvm_initsend(PvmDataDefault); Előkészíti az üzenetküldés adatpufferét a feltöltésre. int data; pvm_pkint(&data, 1, 1); Elhelyezi a `data' egész számot az üzenetküldő pufferben. (pvm_initsend után!) double data[10]; pvm_pkdouble(data, 10, 1); Elhelyezi a 10 valós elemű `data' tömb tartalmát az üzenetküldő pufferben. (pvm_initsend után!) char *str; pvm_pkstr(str); Elhelyezi az `str' string tartalmát az üzenetküldő pufferben. (pvm_initsend után!) string str; int len = str.length(); pvm_pkint(&len, 1, 1); pvm_pkstr((char*)str.c_str()); Elhelyezi egy C++ string méretét és tartalmát ay üzenetküldő pufferben. (pvm_initsend után!) pvm_send(tid, tag); Elküldi az puffer tartalmát a `tid' ID-jű taszknak, `tag' címkét ragasztva rá. pvm_recv(tid, tag); Megvárja, hogy megérkezzen egy üzenet a `tid' ID-jű taszktól `tag' címkével. Ha megkapja, elhelyezi a tartalmát az üzenetfogadó pufferben. Ha a `tag' vagy a `tid' értéke -1, akkor bármilyen címkével, illetve bármelyik taszktól jövő üzenetet elfogad. int bytes, msgtag, msgtid; int bufid = pvm_recv(tid, tag); pvm_bufinfo(bufid, &bytes, &msgtag, &msgtid); Fogad egy üzenetet (mint az előző), majd eltárolja a kapott üzenet tulajdonságait: a `bytes'-ba a méretét, az `msgtag'-be a címkéjét, az `msgtid'-be a küldő ID-ját. Különösen hasznos lehet tid == -1 vagy tag == -1 paraméterrel való üzenetfogadás után. double data; pvm_upkdouble(&data, 1, 1); Kiolvas egy valós számot az üzenetfogadó pufferből, és elhelyezi azt a `data' változóban. (pvm_recv után!) int data[10]; pvm_upkint(&data, 10, 1); Kiolvas 10 darab egész számot az üzenetfogadó pufferből, és elhelyezi őket a `data' tömbben. (pvm_recv után!) char str[SIZE]; pvm_upkstr(str); Kiolvas egy stringet az üzenetfogadó pufferből, és elhelyezi a karaktereket az `str' tömbben. Legyen annyi hely a tömbben, amennyi kell! (pvm_recv után!) int len; pvm_upkint(&len, 1, 1); char *buf = new char[len+1]; pvm_upkstr(buf); string s = buf; delete buf; Kiolvass egy C++ stringet az üzenetfogadó pufferből, ha az a méretével együtt volt eltárolva. (pvm_recv után!) pvm_exit(); Lezárja a kapcsolatot a PVM daemonnal (a program végén kötelezően meg kell hívni, különben üzenetek veszhetnek el).