正如以下代码:
for {
select {
case conn, err := listener1.Accept():
if err != nil {
log.Fatal(err)
}
go handleConn1(conn)
case conn, err := listener2.Accept():
if err != nil {
log.Fatal(err)
}
go handleConn1(conn)
}
}
编辑告诉我select
我们可以在 Go ?
中实现类似的功能答案 0 :(得分:1)
select
仅适用于频道(请参阅此处:https://gobyexample.com/select)
在您的情况下,您可以跨越两个goroutine,以便每个goroutine等待一个侦听器的Accept
并处理连接:
go {
for {
conn, err := listener1.Accept():
if err != nil {
log.Fatal(err)
}
handleConn1(conn)
}
}
go {
for {
conn, err := listener2.Accept():
if err != nil {
log.Fatal(err)
}
handleConn2(conn)
}
}