Ayrat
если у тебя честный асинк, то тредпул даже не вырастет за пределы кол-ва ядер ЦПУ
Nikolay
Сложно
Roman
Дедлок!
дедлок это другое. Это когда, например, у тебя 2 вложенных лока, внешний блочит объект а, а внутренний б. А в другом месте обратный порядок. И тред1 захватил объект а и ждет освобождения объекта б, а тред2 захватил объект б и ждет освобождения объекта а. И так они и висят до перезагрузки
Roman
А в дотнете почему нет такой проблемы?
пушто у нас есть синтаксический сахар, чтобы удобно писать асинхронный код. И в итоге погромистам не нужно выбирать — писать идиоматично или производительно. А в жаве нужно. Можно сделать асинхронность без тредпулов (наверное, я мамкин жавист тока), но придется написать йоба-код, который будет выглядеть как пиздец. И никаких тебе вменяемых await-ов тоже.
Roman
поэтому то, что у нас пишется в 2 строчки, у них превращается в ебучий трактат в четырех томах трехстопным ямбом. @omgszer поправь плз, если я про жаву напиздел)
Ayrat
всё так, в джавке можно сделать нормально
Ayrat
но сук сложно
Nikolay
Ну в целом, с натяжкой так-то можно назвать дедлоком
Nikolay
По сути, один тред ждет, пока другой трэд освободит поток
Nikolay
А тот трэд, ждет пока третий трэд освободит поток
Ayrat
я вот умудряюсь делать несложно на котлине, но один хуй немного обмазаться екзекуторами кастомными приходится
Roman
Ну в целом, с натяжкой так-то можно назвать дедлоком
насколько я понимаю, thread starvation это не приговор, просто дождешься рано или поздно своего треда. На мертво не встанет
Nikolay
Это как раз и будет дедлоком)
Roman
Мне кажется может быть кейс, когда не дождешься
ну даже если может быть, то это не дедлок. Дедлок — это стопроцентная рафинированная пизда. Если возникла, то все кончено. Не бывает, чтоб дедлок посидел и отпустил
Ayrat
Это как раз и будет дедлоком)
если у тебя в тредпуле из двух тредов, два треда задедлочились, то ты мудак!!111
Roman
если у тебя в тредпуле из двух тредов, два треда задедлочились, то ты мудак!!111
нУ эТо тВоЕ мНеНиЕ, тЫсЯчи ПроГрамМисТоВ тАк ПиШут КаЖдЫй дЕнь!111 И нИчЕгО, жИвУт
Mark
Как там было? Это твоё субъективное мнение!!!
Roman
@omgszer а тред старвейшн рассасывается со временем? Ну типа если 1 тред таки соизволили разлочить
Roman
Ливлок
ливлок это ж бесконечный цикл вроде
Nikolay
если у тебя в тредпуле из двух тредов, два треда задедлочились, то ты мудак!!111
А если запустить две одинаковых таски параллельно, они выполняют какую-то работу, затем запускают ещё одну таску, и опять выполняют работу, а потом ожидают завершения запущенной таски
Nikolay
Разве лока не будет?
Ayrat
@omgszer а тред старвейшн рассасывается со временем? Ну типа если 1 тред таки соизволили разлочить
ну да, конечно. просто у тебя ВСЁ начинает работать пиздец плохо и медленно
Ayrat
то есть ты вроде ожидаешь быструю работу (и она вполне может быть быстрая), но там какой-то мудак массив сортирует на единственном треде
Vladislav
@omgszer а тред старвейшн рассасывается со временем? Ну типа если 1 тред таки соизволили разлочить
ну дак многозадачность, ос даст время всем просто ждать заебешься
Ayrat
короче, в продолжении истории, тот парень оказался вменяемым. Написал мне слёзное письмо что он нихуя не понимает в тредах и вообще его взяли по объявлению и долго описывал как же он рад что смог чему-то научиться сегодня. Кстати, азиат, что важно
Ayrat
Возможно завтра он со стыда уже гопак напишет
Ayrat
Потому что сегодня вечером РАЗБЕРЁТСЯ в тредах
Ayrat
возможно его семья уже отвернулась от него, т.к. он не разобрался достаточно хорошо
Roman
ну дак многозадачность, ос даст время всем просто ждать заебешься
да я так и думал, прост решил перепроверить на всякий. Ну, чтоб от меня семья не отвернулась за то, что я не разобрался достаточно хорошо
Ayrat
Прям письмо ?)
Ну в слаке.
Ayrat
Если б мог в зуме в ноги кинуться, наверное кинулся бы. Заебался с ним прощаться, все рассыпался в благодарностях
Maksym
Ну в слаке.
Я уже прям представлял что чувак написал тераду извинений на емейл, плюс менеджера прикрепить)
Roman
Если б мог в зуме в ноги кинуться, наверное кинулся бы. Заебался с ним прощаться, все рассыпался в благодарностях
хорошая страта. Теперь ты дважды подумаешь, прежде чем его хуесосить на ревью — мало ли, опять заебет извинениями
Ayrat
Ну лучше так, чем если бы он тебя назер послал и доказывал , что ты не прав )
Ну я ожидал второго да. Не ожидал что он окажется обучаемым!
Anonymous
Критерий
do functional programmers dream about cock?
Shub
Ну я ожидал второго да. Не ожидал что он окажется обучаемым!
Да он просто компромат собирает, ты ж обязательно где-то токсик окажешься. Вот он и напишет: «текникалли стронг инженер, но ЕСТЬ ОДИН НЬЮАНС»
Ayrat
лыжи смазаны
Shub
Про тебя так писали? 🤣
Про всех так писали, это менеджмент 101
Hog
Про всех так писали, это менеджмент 101
Наверное ты прав. Но за 20+ лет мне попался такой мудак только единожды.
Vasiliy
https://naked-science.ru/article/nakedscience/tsena-straha
Vasiliy
когда то болтали насчет атомной энергетики
Vladislav
https://github.com/fsprojects/FSharpPlus/blob/master/src/FSharpPlus/TypeLevel/TypeBool.fs тут недавно @eglyph вроде кидал тип була кастомный
Vladislav
я нашёл это и плачу
Danil
#define false true
Vladislav
let inline Not (b: ^Bool) = (^Bool: (static member Not: _->_) b)
Vladislav
Viacheslav
let inline Not (b: ^Bool) = (^Bool: (static member Not: _->_) b)
Зачем такое может быть нужно?
Ayrat
Зачем такое может быть нужно?
@DogeShibu вот он должен знать!
Doge
@DogeShibu вот он должен знать!
Мне тоже сложно представить, если честно.
Ayrat
Похоже это знание умрёт вместе с автором
Ayrat
В теории это для компайл тайм вычислений булов, но блять зачем
Ayrat
Чо то непонятно
Ну типа у тебя false = true кинет ошибку компиляции
Ayrat
Осталось понять где в ФШАРПЕ это может пригодиться
Ayrat
Как??? И зачем, кстати?
Ну у тебя все инлайнится же и в статике все буловые операции раскрываются
Ayrat
Как??? И зачем, кстати?
Подобные техники пользуют в верифицирующих языках чтобы найти противоречие в леммах или наоборот их доказать
Ayrat
Но блять, при чём здесь фшарп
Vladimir
В теории это для компайл тайм вычислений булов, но блять зачем
а не просто ли это возможность инвертировать типы у которых метод Not определен?
Vladimir
аа, понятно) я по ссылкам без надобности не хожу)
Doge
В теории это для компайл тайм вычислений булов, но блять зачем
Я просто не очень представляю как это может в фшарпе пригодиться. Обычно эти инструменты вместе с тайпклассами и т.п. юзаются, чтобы что-то реальное сделать, но в фшарпе их нету же.
Doge
Т.е. везде где я использовал тайплевел в том или ином виде - это так или иначе сводилось к выводу тайпклассов через Generics и т.п. механизмы.
Doge
@omgszer А там, кстати, примера какого-то осмысленного кода с этой машинерией нет?
Doge
Надо поискать, я с телефона смотрел
А, ну там есть спуск значений с тайплевела в рантайм, значит что-то можно попробовать на этой штуке сделать.
Ayrat
Пацаны, помогите с джавой. Или я тупой, или идея
Ayrat
две проблемы, код выше требует return statement. И подчёркнутое желтым говорят что always true
Ayrat
Я видимо в упор тупой, но не понимаю почему он always true