Я знаю, что могу ждать по нескольким каналам, используя синтаксис select {}
в Go, и ждать нескольких дескрипторов файлов, используя syscall.Select()
или подобные функции. Но можно ли одновременно ждать по обеим каналам?
Для фона я хочу иметь goroutine, который принимает сообщения по каналу и пересылает их по соединению сокета (предоставляется gozmq), одновременно ожидая ответа на соединение сокета.
Из-за требований безопасности потока в базовой библиотеке сокет может быть доступен только в одном потоке за раз, поэтому мне было интересно, есть ли способ справиться с этим из одного goroutine.