.... fortsat
Det der også forvirrer mig lidt er, at der står i en lærebog et sted, at man 
må endelig ikke undervurdere snedigheden i sådan en mutex, selv om det bare 
er nogle flag der bliver manipuleret. Det sker i den HELT rigtige 
rækkefølge, hvilket gør at to tasks ikke begge kan tro, at de vandt mutexen.
 flag[0]   = 0
 flag[1]   = 0
 turn      = 0
 P0: flag[0] = 1
     turn = 1
     while( flag[1] && turn == 1 );
             // do nothing
     // critical section
     ...
     // end of critical section
     flag[0] = 0
P1: flag[1] = 1
    turn = 0
    while( flag[0] && turn == 0 );
                // do nothing
    // critical section
    ...
    // end of critical section
    flag[1] = 0
(fra 
http://en.wikipedia.org/wiki/Peterson's_algorithm)
Hvis jeg så går med til at dette kan lade sig gøre på konceptuelt niveau, så 
er det vel ikke sikkert at det bliver rigtigt når man skriver det i c, fordi 
compileren kunne finde på at omarrangere lidt på koden. Og selv hvis man 
lavede det i assembler, så er det at assigne en variabel på nogle platforme 
én assembler instruktion, på andre kunne det kræve en load over i et 
register, additionen, og til sidst en store ud i memory igen. Er jeg 
paranoid her ?
Studerer boost::mutex, men der er sq en del at læse !
Mangler en n-way implementation i c.
tpt