LINUX.ORG.RU

История изменений

Исправление xaizek, (текущая версия) :

Проблема в том, что как раз асинхронность и является моей главной целью, ради чего всё это затевалось.

Не понимаю, кому захочется иметь с этим дело добровольно. Приходилось работать с async/await, так я до сих пор плююсь при виде одних только этих слов. У них есть существенная проблема: классы обладают инвариантами, которые выполняются только до и после вызовов их методов. await посередине всё ломает, так как управление может (и это естественно происходит) вернутся в объект с поломанным внутренним состоянием, после чего всё летит к чертям; аналогично управление уходит в другое место до восстановления инвариантов. Итого, эта штука заставляет оглядываться на каждой строчке кода, вместо начала/конца методов. Оно просто несовместимо с объектами с изменяемым состоянием и создаёт проблемы на пустом месте. Я уже не говорю о том, что отлаживать эту неявную лапшу — сущий ад. А ещё и на микроконтроллерах...

Исходная версия xaizek, :

Проблема в том, что как раз асинхронность и является моей главной целью, ради чего всё это затевалось.

Не понимаю, кому захочется иметь с этим дело добровольно. Приходилось работать с async/await, так я до сих пор плююсь при виде одних только этих слов. У них есть существенная проблема: классы обладают инвариантами, которые выполняются только до и после вызовов их методов. await посередине всё ломает, так как управление может (и это происходит) вернутся в объект с поломанным внутренним состоянием, после чего всё летит к чертям; аналогично управление уходит в другое место до восстановления инвариантов. Итого, эта штука заставляет оглядываться на каждой строчке кода, вместо начала/конца методов. Оно просто несовместимо с объектами с изменяемым состоянием и создаёт проблемы на пустом месте. Я уже не говорю о том, что отлаживать эту неявную лапшу — сущий ад. А ещё и на микроконтроллерах...