next up previous contents
Next: Zajem rezultatov Up: B.1.4 Upodabljanje Previous: B.1.4 Upodabljanje Vsebina: contents

Dodeljevanje naslednje naloge

Podprogram send_nextjob skrbi za alokacijo prostega racunalnika, ki mu dodeli naslednjo nalogo iz mnozice neobdelanih nalog.

static int
* send_nextjob ()
* {
* int y1, y2;
* y2 = jobnext-- * height; /* Pozor enaka prioriteta operatorjev */
* y2 /= njobs; /* za mnoznje in deljenje */
* y1 = jobnext * height; /* y1 <= y && y < y2 */
* y1 /= njobs; /* y1 je v pasu, toda y2 NI */

servjobs[servfree] = jobnext;

Sporocilo prostemu delavcu je sestavljeno iz stevilke naloge, zacetne in koncne vrstice v rastrski sliki.

pvm_initsend(PvmDataDefault);
* pvm_pkint(&jobnext, 1, 1);
* pvm_pkint(&y1, 1, 1);
* pvm_pkint(&y2, 1, 1);
* if (pvm_send(servtids[servfree], MSGTILE))
* {
* pvm_perror("sending to tile server");
* return -1;
* }
* if (verbose)
* {
* printf("[%d@%d:%d-%d]", jobnext, servfree, y1, y2 - 1);
* fflush(stdout);
* }

#ifdef DEBUG
* printf("sent job %d to serv %d: y2 = %d, y1 = %d\n",
* jobnext, servfree, y2, y1);
* #endif

servfree = servflist[servfree];
* return 0;
* }


Copyright © 1995 Leon Kos, Univerza v Ljubljani