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;
* }