Size: a a a

2021 February 27

EG

Emmanuel Goldstein in rust_offtopic
Кажется, дожидаться ответа сообщения нельзя (или про это нет в туториале)
источник

EG

Emmanuel Goldstein in rust_offtopic
Как вообще тогда работает I/O — не знаю
источник

KR

Kai Ren in rust_offtopic
Ну тебе в ответ видимо прилетает месседж.
источник

EG

Emmanuel Goldstein in rust_offtopic
Kai Ren
Ну тебе в ответ видимо прилетает месседж.
Ну разве что ты передаёшь туда себя, чтобы тебе могли ответить
Но это, типа, будет очень бойлерплейтно
источник

KR

Kai Ren in rust_offtopic
Ну, Go way, все дела
источник

EG

Emmanuel Goldstein in rust_offtopic
Но видимо так и есть
Например, InputStream принимает на вход что-то, что реализует интерфейс InputNotify, который может получить какую-то инфу
источник

EG

Emmanuel Goldstein in rust_offtopic
Но это ж неюзабельно
источник

KR

Kai Ren in rust_offtopic
Плюс размазывать логику операции по нескольким хэндлерам/состояниям будет неудобно.
источник

KR

Kai Ren in rust_offtopic
Типа... пишите всё явными стэйт-машинами и не вымахивайтесь.
источник

EG

Emmanuel Goldstein in rust_offtopic
Но вся стдлиба явно сделана именно через передачу нотифаеров везде
источник

KR

Kai Ren in rust_offtopic
Ну, даже с нотифаями дедлок возможен, просто неявный. Мы сместили место ошибки в другое место.
источник

EG

Emmanuel Goldstein in rust_offtopic
Kai Ren
Ну, даже с нотифаями дедлок возможен, просто неявный. Мы сместили место ошибки в другое место.
Что такое «неявный дедлок»?
источник

KR

Kai Ren in rust_offtopic
Хм... логический что ли...

Актора А отправляет месседж1 актору Б и для продолжения процесса нам надо чтобы он от Б получил месседж2. Актору Б для того чтобы отправить месседж2 актору А, нужно от него ещё получить месседж3. Но А отправляет месседж3, только когда получит месседж2.

Типо да, ничего не лочится в традицинном смысле этого слова, но процесс зависнет и не будет продолжаться ожидаемым образом. Своеобразный дедлок условий никуда не делся.

Думаю именно подобные моменты Алекс подразумевал, что это логическая ошибка.
источник

EG

Emmanuel Goldstein in rust_offtopic
Kai Ren
Хм... логический что ли...

Актора А отправляет месседж1 актору Б и для продолжения процесса нам надо чтобы он от Б получил месседж2. Актору Б для того чтобы отправить месседж2 актору А, нужно от него ещё получить месседж3. Но А отправляет месседж3, только когда получит месседж2.

Типо да, ничего не лочится в традицинном смысле этого слова, но процесс зависнет и не будет продолжаться ожидаемым образом. Своеобразный дедлок условий никуда не делся.

Думаю именно подобные моменты Алекс подразумевал, что это логическая ошибка.
Процесс при этом тупо завершится, кажется
источник

EG

Emmanuel Goldstein in rust_offtopic
Актор А отправляет м1
Актор Б получает м1 и сохраняет куда-то себе (он не может в явном виде ждать месседжа)
Актор А не выполняет ничего
Актор Б не выполняет ничего
Все акторы ничего не делают, программа завершается
источник

EG

Emmanuel Goldstein in rust_offtopic
Завершение процесса is arguably better than deadlocking
источник

KR

Kai Ren in rust_offtopic
Как это актор не может в явном виде ждать месседжа? Откуда он может знать кто ему что там и когда будет отправлять? А если сообщение на обработку прийдёт через 5 минут?
источник

EG

Emmanuel Goldstein in rust_offtopic
Kai Ren
Как это актор не может в явном виде ждать месседжа? Откуда он может знать кто ему что там и когда будет отправлять? А если сообщение на обработку прийдёт через 5 минут?
Допустимые «сообщения» для отправления актору определяются как методы ключевым словом be
источник

p

polunin.ai in rust_offtopic
#мне_поебать_на_уб
источник

EG

Emmanuel Goldstein in rust_offtopic
Актор всегда ждёт сообщений и обрабатывает свой мейлбокс в порядке их получения
источник