Можно ли в Go одновременно ждать на обоих каналах и файловых дескрипторах?

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

Для фона я хочу иметь горутину, которая принимает сообщения по каналу и пересылает их через соединение сокета (, предоставленное gozmq), одновременно ожидая ответов на подключение к сокету.

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

14
задан Denys Séguret 13 September 2012 в 16:26
поделиться