Как писать в канал без блокировки golang?



@Mamol27

Здравствуйте, учу Go.
Есть два горутина, один пишет в канал (sender), другой эти данные читает (reader). Однако первый пишет чаще, чем второй читает. Нужно чтобы sender мог записать число в канал, даже если reader его еще не считал, то есть обновить, а reader считывал только свежие данные.
При этом sender работает не совсем стабильно, по физическим причинам, и не гарантирует что получит данные для записи в канал за известный период времени.


Решения вопроса 0


Ответы на вопрос 1



@2ord

Использовать (durable) очереди сообщений или буферизованный канал (указав длину канала), способный вместить достаточное количество сообщений (например, 100) Но если программа получит сигнал прерывания, то они будут утеряны. Поэтому 1-й вариант надежнее.

а reader считывал только свежие данные.

Если в сообщении отправлять атрибут времени отправки, то получатель может отбросить сообщение, если оно стало неактуально.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *