panic: runtime error: send on closed channel
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Я вот пытаюсь придумать "чистый" (т.е тот, который ни при каких условиях не вызовет панику) способ подписки одной горутины на услуги другой. И что-то у меня не получается.Собственно тривиальная задача, которую я на эрланге реализую за 15 минут:Есть поставщики информации.Есть получатели информации.Получатель подписывается на информацию у поставщика. У одного поставщика может быть несколько получателей. У получателя - несколько поставщиков.
Поставщик может в любой момент прекратить "вещание" (Планово или внепланово).
Получатель может в любой момент прекратить "получение" (планово или внепланово)
Я вот или еще не грокнул глубинную логику голанга во всей полноте, или язык впринципе не предназначен для написания отказоустойчивых систем. Я понимаю, что скорее всего именно я дурак. Но как-то от этого не легче. :)
среда, 14 мая 2014 г., 15:26:36 UTC+3 пользователь Dmitry Vyukov написал:
> Но, если честно, хочется посмотреть разработчикам языка в глаза и
> поинтерсоваться, чем они думали, когда не сделали атомарную операцию
> "послать в канал, и если он закрыт - вернуть ошибку".
А в какой ситуации это может быть полезно?
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Собственно тривиальная задача, которую я на эрланге реализую за 15 минут:Есть поставщики информации.Есть получатели информации.Получатель подписывается на информацию у поставщика. У одного поставщика может быть несколько получателей. У получателя - несколько поставщиков.Запрашиваем у поставщика канал для получения информации. Читаем из него.
WBR,Fyodor.
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Собственно тривиальная задача, которую я на эрланге реализую за 15 минут:Есть поставщики информации.Есть получатели информации.Получатель подписывается на информацию у поставщика. У одного поставщика может быть несколько получателей. У получателя - несколько поставщиков.Запрашиваем у поставщика канал для получения информации. Читаем из него.Начнём с простого. Как запрашиваем?Да разные способы могут быть. Например, вызываем функцию или метод, которая вернёт канал.
Запрашиваем у поставщика канал для получения информации. Читаем из него.Начнём с простого. Как запрашиваем?Да разные способы могут быть. Например, вызываем функцию или метод, которая вернёт канал.
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Про подписку вот вам пример: http://play.golang.org/p/s4lm1a6ONE
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
> Про подписку вот вам пример: http://play.golang.org/p/s4lm1a6ONE
Это решение не обрабатывает возможную "внезапную" отписку подписчика.
Закрытие канала - это не более чем посылка сообщения "данные
закончились, новых сообщений больше не будет". Не надо пытаться
применять его для других целей.
>> Это решение не обрабатывает возможную "внезапную" отписку подписчика.Тут начнутся дедлоки из-за циклической зависимости.
>
>
> Верно. Можно давать подписчику второй канал, в который он будет посылать
> уведомление об отписки.