Ahoj,
mám naplněnou kolekci ConcurrentDictionary, která obsahuje klíče (adresářové cesty) a hodnoty (List<KeyValuePair<string, string>>).
První string v listu je název souboru, druhý hash, který budu počítat. Takto to mám naplněné (záměrně).
Nyní stojím řeším, jak rozhodit výpočet mezi více vláken. Vlastně s tím dělám poprvé, a tak úplně ani nevím, co hledat.
Představa je taková, že počet vláken/workerů bude omezen na počet jader (to mám, např. , tedy vždy poběží max. 8 vláken společně.
Jakmile se jedno vlákno ukončí, nastartuje se další s následujícím klíčem, stále dokola, než se zpracují všechny klíče slovníku.
Každý worker dostane na vstupu klíč (cestu), podle něj bude procházet List souborů, dopočítávat a vkládat hashe.
Představa asi jasná, ale nevím jak to udělat.
Myslel jsem, že k tomuto slouží TreadPool, ale tam jsem nikde nenašel možnost nastavit maximum vláken.
Můžu si počet vláken uchovávat v proměnné, a v cyklu je případně startovat, ale to se mi moc nezdá. Předpokládám, že C# má pro toto nějaké udělátko. Vlastně je to asi model producent-konzumer, přičemž konzumerů je X a producent mi už slovník naplnil.
Jak byste to řešili? Děkuji.