thedeemon: (Default)
Dmitry Popov ([personal profile] thedeemon) wrote2012-05-21 03:52 pm
Entry tags:

параллелизм

С четырьмя ядрами можно не только делать ошибки в четыре раза быстрей, но и сообщать о них слаженным хором:

:)

[identity profile] polycode.livejournal.com 2012-05-21 09:17 am (UTC)(link)
Так вот откуда взялось "ffffffffuuuuuuuu..."!

[identity profile] spacediver.livejournal.com 2012-05-21 12:56 pm (UTC)(link)
Как интересно, а почему так побайтово слаженно?.. Где буферизация?

[identity profile] thedeemon.livejournal.com 2012-05-21 05:10 pm (UTC)(link)
Тут сработал assert, который выводит в stderr, который unbuffered. Использован multithreaded runtime, и видимо он разруливает вывод на stderr из разных потоков. Но что получится вот так буква в букву - такого я сам не ожидал.

[identity profile] spacediver.livejournal.com 2012-05-21 07:35 pm (UTC)(link)
О, про stderr не знал.

[identity profile] 109.livejournal.com 2012-05-21 06:28 pm (UTC)(link)
а вот с Console.WriteLine() такого не бывает. видимо, внутри синхронизация зашита.
wizzard: (Default)

[personal profile] wizzard 2012-05-21 07:36 pm (UTC)(link)
угу. в исходники лазил давно, но в общем сброс буфера в пределах процесса атомарный
wizzard: (Default)

[personal profile] wizzard 2012-05-21 07:37 pm (UTC)(link)
песня кристофера раунд-робина)

[identity profile] soonts.livejournal.com 2012-05-21 10:56 pm (UTC)(link)
На C++ совсем не просто сделать thread-safe logger (не важно куда в консоль или файл), который бы при этом не сильно отражался на производительности.

В других языках, где поддержка многопоточности лучше, задача почти тривиальная (grand central dispatch в objective-c, dispatcher в C#).