@Mamol27
Здравствуйте, учу Go.
Есть два горутина, один пишет в канал (sender), другой эти данные читает (reader). Однако первый пишет чаще, чем второй читает. Нужно чтобы sender мог записать число в канал, даже если reader его еще не считал, то есть обновить, а reader считывал только свежие данные.
При этом sender работает не совсем стабильно, по физическим причинам, и не гарантирует что получит данные для записи в канал за известный период времени.
Есть два горутина, один пишет в канал (sender), другой эти данные читает (reader). Однако первый пишет чаще, чем второй читает. Нужно чтобы sender мог записать число в канал, даже если reader его еще не считал, то есть обновить, а reader считывал только свежие данные.
При этом sender работает не совсем стабильно, по физическим причинам, и не гарантирует что получит данные для записи в канал за известный период времени.
Решения вопроса 0
Ответы на вопрос 1
@2ord
Использовать (durable) очереди сообщений или буферизованный канал (указав длину канала), способный вместить достаточное количество сообщений (например, 100) Но если программа получит сигнал прерывания, то они будут утеряны. Поэтому 1-й вариант надежнее.
а reader считывал только свежие данные.
Если в сообщении отправлять атрибут времени отправки, то получатель может отбросить сообщение, если оно стало неактуально.