Ahoj,
patlam si to nejaky convertor dat v C# - Express 2010. Napadlo me to zkusit pustit multithreadove (pres Parallel.For.. ) na 4 jadru je to cca 4 rychlejsi nez na v single threadu, ale mam problem se synchronizaci.. jak se dalo cekat, to bude na tom to slozity. Protoze tomu samozrejme poradne nerozumim, zkousel jsem neco googlit, ale kdovijak daleko jsem se nedostal.
Jde o formularovou aplikaci, kde jsem oproti singlu threadu narazil na 2 problemy:
1) jak synchronizovat ProgressBar value? V single threadu ji nastavuje normalne pres ProgressBar.Value = , max vim dopredu, Value - to je pocet iteraci, ktery si v single threadu incrementuju uvnitr toho cyclu co bezi multithreadove.. ale co v multithreadu?
2) V single threadu si vysledek zapisu do stringu:
AllLinesForWrite += SourceLine + "\r\n";
, ktery ve finale potom co skonci Parallel blok zapisuju do souboru, ale pri multithreadu dostavam - diky tomu jen cast, asi za 1 thread.
Zkousel jsem pouzit lock, ve stylu:
lock (AllLinesForWrite)
{
AllLinesForWrite += SourceLine + "\r\n";
}
Ale vysledek je, ze mi to vraci vic dat, ze je na vstupu a nez v single threadu, cili je tam asi neco duplicitniho, nebo je tam jina chyba.
Da se tohle nastudovat / vyresit nejak rychle, nebo je to moc komplikovany?