Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem c++ více vláken, stejná cache

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.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny