Vím co je to kritická sekce.
Program funguje bez problému, nejsou tam žádné chyby. Jen je pomalejší, když vytvořím více než jedno vlákno.
int promenna = 0;
void vlakno(){
while(nejaka podmínka){
...nejaky kod;
LOCK();
promenna = promenna + 1;
UNLOCK();
}
}
Pokud mám jedno vlákno, tak to jedno vlákno má uloženou proměnnou "promenna" v cachce a nemusí sahat vůbec do paměti. Program je pak o něco rychlejší kvůli tomu.
Když mám dvě vlákna, tak každé vlákno má svoji vlastní cachce. Pokaždé když se tedy změní proměnná "promenna", musí ji jedno vlákno uložit do paměti, a druhé má neplatnou cache, a tak ji musí zase načíst z paměti. Program je potom mnohem pomalejší. (cache je rychlejší než paměť).
Proto by bylo vhodné nějak zařídit aby ty sdílené proměnné byli i ve stejné cache.