Go语言并发编程与网络编程实战
1. 并发编程基础
1.1 基于未来模式的API设计
在开发计算密集型包时,围绕未来(Futures)设计整个API是一种有效的策略。未来模式可以在包内部使用,同时保持友好的API。以下是一个示例函数 InverseFuture ,它启动一个闭包作为 goroutine,并将结果逆矩阵放在通道 future 上:
func InverseFuture(a Matrix) {
future := make(chan Matrix)
go func() { future <- Inverse(a) }()
return future
}
1.2 多路复用
1.2.1 典型的客户端 - 服务器模式
客户端 - 服务器应用程序是 goroutine 和通道发挥优势的场景。客户端向服务器发送请求,服务器处理请求并返回响应。在Go中,服务器通常为每个客户端请求启动一个 goroutine 来处理请求。以下是一个简单的示例:
type Request struct {
a, b int
replyc chan int // reply channel inside the Request
}
type binOp func(a, b int) int
func run(op binOp, req *Request) {
r
超级会员免费看
订阅专栏 解锁全文
186

被折叠的 条评论
为什么被折叠?



