Ayrat
То есть это ожидаемое поведение
Ayrat
Надо же как-то получать все те замыкания до do! в коде после do!
Ayrat
А вот ретурн как раз подразумевает что после него кода уже нет поэтому там стейт не сохраняется и ссылок нет. Поэтому запускатор трамплина получает объект без хвоста
Ayrat
И гц собирает предыдущий мусор
Ayrat
Короче памяти аллоцируется одинаково, но в случае ретурна память собирается
Nikolay
Вот и пытаюсь выкрутиться по другому
Nikolay
Да чот не то делаешь
Взял полностью твой код, и прогнал 1кк сообщений через один мейлбокс
Nikolay
https://github.com/Hopac/Hopac/issues/201
Ayrat
Я тоже 1кк гонял
Nikolay
Но у меня ж работало.
У меня работает на 4+ мейлбоксах
Vasily
Там небось серверный гц надо ставить
Nikolay
На одном нифига
Nikolay
Nikolay
Если оно даже заработает
Nikolay
Хз где может выстрелить
Ayrat
У меня работает на 4+ мейлбоксах
Мой кот я вчера скидывал
Nikolay
Я тоже 1кк гонял
Ну попробуй мой пример запустить
Ayrat
Гопак требует серверный гц
Ayrat
Ну попробуй мой пример запустить
Скинь сюда ещё раз чтобы точно.
Nikolay
Мой кот я вчера скидывал
Я взял твой код, и добавил просто Message и SetResult
Ayrat
Я ж хз где ты там чо добавил
Nikolay
let task = async { let countAgents = 1 let countMessages = 1_000_000 let loop (mailbox: Hopac.Mailbox<_>) = job { match! mailbox with | Message.Done tcs -> tcs.SetResult(()) | _ -> () } |> Job.foreverServer |> start let agents = [| for _ in 1 .. countAgents do let processor = Hopac.Mailbox() loop processor processor |] let random = Random countMessages for _ = 1 to countMessages do let t = random.Next(0, countAgents - 1) let mb = agents.[t] Mailbox.send mb Message.Unit |> start let tcs = [| for i in 0 .. countAgents - 1 do let t = TaskCompletionSource() Mailbox.send agents.[i] (Message.Done t) |> start t.Task |] do! Task.WhenAll(tcs) |> Async.AwaitTask |> Async.Ignore } |> Async.StartAsTask task.Wait()
Ayrat
Приду домой, посмотрю
Ayrat
Меня опять на улицу выгнали
Nikolay
Ковид разносишь
Nikolay
Лучше бы в факторио играл
Диана
Ну проблема в том, что каждая итерация цикла в асинке жрет память, и хз как от этого избавиться
Скинь мне код, который в каждой итерации потребляет что-то. На верху уже куча всего накидано, буду полгода разбираться.
Ayrat
Я уже не заразный. А дома один хрен с детьми сидеть. На улице проще, они червяков колупают, говно палками тыкают. в общем, счастье
Nikolay
async { let mutable i = 0 while i < 1_000_000 do i <- i + 1 }
Но это можно рекурсией обойти
Nuxs🏴‍☠️
Лучше бы в факторио играл
Ехал конвейер через конвейер, видит конвейер, в конвейере конвейер, сунул конвейер конвейер в конвейер конвейер конвейер конвейер конвейер
Ayrat
тест пришёл? 🤔
Ага, not detected, но сиди дома потому что фолс позитив 25%
Nikolay
async { let mutable i = 0 let incr = async { i <- i + 1 } while i < 1_000_000 do do! incr } А вот тут уже рекурсия не получится
Nikolay
Чтобы ещё и меньше кушала
Nikolay
Чем цикл
Анна
Ага, not detected, но сиди дома потому что фолс позитив 25%
Я общалась с подругой, она акушеркой работает в ЖК... Кароч у них половина персонала переболела короной - либо карантинились с подтверждённым, либо на антитела +. У её доктора тоже положительные антитела, сама она огребла классический симптом - потерю вкуса и обоняния. И блин оба мазка минус, антитела не обнаружены 🙈 прям обидно
Ayrat
Мазок отрицательный, да. Да и хер с ним)
Анна
Мазок отрицательный, да. Да и хер с ним)
поздно взяли скорее всего. Но видимо париться можно уже чуточку меньше
Ayrat
Второй раз когда уже почти ок был
Ayrat
Первый раз ебантеи пролили что-то
Анна
Ну вот продолбанный результат же ты не знаешь
Анна
а второй поздно
Ayrat
Ну да.
Анна
Кароч, 90% что сорвал джекпот
Nikolay
поменяй do на ретурн?
Я не за компом
Ayrat
Я не за компом
Не понимаю. Воскресенье. Неженатый молодой человек. И не за компом
Ayrat
Пока ты гуляешь, враги качаются!
Vladislav
Vladislav
С подключением
Nikolay
Nikolay
Людям объясняю
Nikolay
Думаю как обойти
Ayrat
Людям объясняю
Люди не про аллокации, а про SO
Ayrat
Аллокации в асинках будут всегда, так как колбеки на колбеках
Ayrat
Ну хотя бы цикл чтобы не жрал
Ну ты ж понимаешь что это не цикл
Vladislav
Пока не будет кода сайма можно забить
Nikolay
Ну хотя бы цикл чтобы не жрал
Я хотел через cil, но не вышло
Vladislav
Со стейт машинами
Ayrat
А async.While(guardBoolean, nextCallback)
Nikolay
Что ему надо?
Vladislav
Там нет циклов
Nikolay
Nikolay
Надо глянуть
Vladislav
Колбеки
Vladislav
Колбечные