Odpalenie na warunku

0

Witam. Mam dwa wątki, dwie pętle. Gdy jedna nie spełnia warunku, zmienia wartość zmiennej, tak by odpaliła się druga, ale ta nie odpala :|
Kod:

stan = 0;
wartosc=1;
void Jeden(){
     while(wartosc==1){
           if(stan>0){
               costam;
          }
          else {
               wartosc=2;
               break;
          }
     }
}

void Dwa(){
     while(wartosc==2){
          costam;
     }
}

Nie wiedząc czemu nie chce się odpalić funkcja Dwa.

0

Bo ten kod nie ma sensu? Przecież jeśli warunek wartosc==2 nie jest spełniony to wątek od razu zakończy funkcje. A ty chyba chciałeś jakieś "aktywne czekanie" tutaj zrobić?

0

Wątki działają w nieskończoność.

0

No to moze pokaż konkretnie kod który uruchamiasz a nie jakis snippet bez sensu? Bo trudno diagnozować problem skoro nie raczyłeś pokazać co ci konkretnie nie działa.
Szczególnie że jak na program wielowątkowy to w tych twoim kodzie jest cała masa błędów w stylu check-then-act, race condition i zupełny brak brania pod uwagę thread-safety pewnych operacji. Nie ma tam zadnych instrukcji triggerujacych memory barrier więc mógłbyś w ogóle nie widzieć zmian z tego drugiego wątku przez jakis false-sharing w cache.
Jakby te zmienne chociaż były volatile albo były jakimiś AtomicX...

1 użytkowników online, w tym zalogowanych: 0, gości: 1