

Počet vláken programu - měl by se přizpůsobit CPU?
Zdravím. Chtěl bych se zeptat na takovou věc. Dejme tomu, že program řeší určitou úlohu a ta je už napevno rozdělená na 8 částí (protože určovat počet až za běhu je problematické). Tyto části lze zpracovávat paralelně, ale také sériově jednu za druhou. Lze tedy vytvořit až 8 vláken a každému předat jednu část ke zpracování. Otázka je, jak to řešit na CPU, které má méně než 8 jader/vláken. Je nějaký rozdíl v tom, pokud program přesto použije 8 vláken, nebo použije např. 4 na 4-jádrovém CPU a v každém vlákně provede 2 části sériově? Jde o to, jestli nějak programově řešit rozpoznávání počtu vláken, nebo natvrdo v jakékoliv situaci použít 8 vláken. Pokud by měl procesor třeba jen 1 jádro, těch 8 vláken si nějak pořeší OS a bude mezi nimi přepínat, to je jasné. Ale nebude to méně efektivní, než kdyby program nespouštěl vlákna a všechny části zpracoval sériově? Jak velká je vůbec režie kolem vláken v OS? Vím jen, že potřebují podstatně méně prostředků, než procesy. Ale jinak moc nevím.
edit: Já myslím, že nechat 8 vláken plně v režii plánovače OS je také přijatelné. Ale nechám si případně poradit.
Díky.
Ono nejde ani tak o reziu vlaken v OS (to neni nic tragicke), ale o to ze ked tu ulohu rozdelis, tak mas overhead (synchronizacia a riadenie rozdelovania pripadne kdesi presuvat data atd)
P.S. prepnutie kontextu je principialne tusim len 1 instrukcia, ale neviem co tam vsetko k tomu Win este sachuje.
Ty části jsou na sobě zcela nezávislé, takže synchronizace není potřeba. Ale zjistil jsem teď jeden nedostatek, kvůli kterému to asi padne a zůstanu u 4 vláken (mělo jít o rozšíření na 8).
edit: beru zpět, chyba nalezena.