Ayrat
Я могу дать эти две строчки
Vasily
Ну давай
Ayrat
Ну, ты сам попросил
Vasily
И еще понять, как функцию в джобу замапить
Vasily
Функция общего вида 'a->'b
Ayrat
let inline lift f = f >> Job.result
Ayrat
и получится a -> Job<b>
Vasily
А дальше как?
Vasily
Мне просто запустить n тасок с заданным параллелизмом и всех дождаться
Hog
Василий хочет мапу наверное из AsynSeq операций в Seq<Result>
Ayrat
Ща
Vasily
Но чтобы они, сука, были честными
Ayrat
Да будут, будут. Ща я свой код нахожу
Ayrat
логинюсь
Ayrat
https://gist.github.com/Szer/64c4a10c748734febc81fcc69847e635
Ayrat
ты можешь взять кусок отсюда если не нужен интероп со стримами гопака
Vasily
Интероп не нужен
Ayrat
это честный пул воркеров который поддерживает уровень параллелизма
Vasily
И как его юзать?
Ayrat
let pool = Pool f // f вида 'a -> Job<'b>
pool.Queue 1 //сюда нужно подавать 'a
Ayrat
аутпут вываливается в pool.Output в виде стрима, да
Vasily
Т.е. Seq.iter по 'a
Ayrat
наверное.
Vasily
Проще тогда на тасках уже наговнякать
Vladislav
WhenAll?
Ayrat
он такой же как async.parallel
Ayrat
просто пуляем всё подряд в тредпул напохуй
Vasily
Вопрос, какого хера он вывод в консоль блокирует
Ayrat
именно Console.WriteLine тредсейф, а вот printf нет
Ayrat
вот принтф пользоваться нельзя из многопотоков
Ayrat
получится каша
Ayrat
а Console.WriteLine абсолютно норм
Hog
у меня был Serilog AsyncSink
Крылатый
Крылатый
Ыы
Hog
Крылатый
Нашёл Дракон-C#, но не нашёл Дракон-F#
Крылатый
@fvnever го запилим?
Hog
Dr. Friedrich
Vasily
Dr. Friedrich
Не люблю блок-схемы
Крылатый
Ayrat
Ayrat
МОЖЕТ он её блокирует сам внутри
Ayrat
ща ещё раз проверю
Dr. Friedrich
> I/O operations that use these streams are synchronized, which means that multiple threads can read from, or write to, the streams.
Dr. Friedrich
Окей
Hog
в доках Console - thread safe
Ayrat
Ayrat
проверять не буду ещё раз)
Dr. Friedrich
в доках Console - thread safe
Ну формально thread safety — растяжимое понятие, оно может по-разному трактоваться в разных подсистемах
Dr. Friedrich
Но вроде как про консоль понятно, да. Она лочит.
Ayrat
в данном случае я подразумевал что писание в консоль из многопотоков не вызовет interleaving строк
Dr. Friedrich
Ага
Ayrat
вот долбаный printf вызывает мешанину
Pavel
Холивара ради, а зачем в F# коде вывод на консоль?
Dr. Friedrich
Ну зато printf должен быть быстрее!
Dr. Friedrich
Ayrat
Ayrat
вообще, вообще. Щас тренд на stdout, stderr
Ayrat
типа всё туда пихать, а там лого агрегатор разберётся
Dr. Friedrich
Не, ну формально stdout — необязательно на консоль
Dr. Friedrich
Можно на принтер сразу кидать
Hog
Dr. Friedrich
Ayrat
Hog
Ayrat
даже ажура пошла по этому пути. Они в начале делали через свой ILogger интерфейс
Ayrat
но сейчас, т.к. очень гетерогенная среда в ажуре стала появляться, типа джавы и пр, то не хочется из джавы интеропится с ILogger лол
Hog
Ayrat
он же в фциях вроде есть?
функции под своим рантаймом работают, там пока ещё специфичный интерфейс логинга. Но это временно
Ayrat
а вот батч сервер например, там уже сделали логирование в stdout напрямую