Witam. Mam problem ze zrozumieniem pewnego zapisu podanego w pseudokodzie:
(numer[j],j) < (numer[i],i)
Mógłby mi ktoś wyjaśnić, o co tu chodzi? Zapisałem to w ten sposób:
thread->number[k]<thread->number[i] && k<i
ale nie jestem pewien tego rozwiązania.
EDIT: Jednak ten zapis jest błędny. Synchronizacja nie działa. Zapomniałem wcześniej dołączyć cały pseudokod:
do {
wybieranie[i] = true;
numer[i] = max(numer[0], ..., numer[n-1]) + 1;
wybieranie[i] = false;
for (j = 0; j < n; j++){
while (wybieranie[j]); // czekaj
while ( numer[j] != 0 &&
(numer[j],j) < (numer[i],i) ); // czekaj
}
sekcja krytyczna
numer[i] = 0;
reszta
} while (1);