2015-06-29 23 views
1

有一个异步api更具有地道性,它具有一个阻塞函数作为同步api,它只是简单地调用异步api并在返回之前等待答案,而不是使用非并发api并让调用者在其中运行它自己的goroutine如果他们想要异步?是异步API惯用的阻塞函数吗?

在我目前的情况下,我有一个工作室例程,它从请求通道中读取并向响应通道(它从请求通道获取请求结构中)发送返回值。

这似乎与链接问题有所不同,因为我需要返回值或进行同步,以便我可以确保api调用在我做其他事情之前完成,以避免竞争状况。

+1

[Idiomatic Golang goroutines]的可能重复(http://stackoverflow.com/questions/28506013/idiomatic-golang-goroutines) – icza

+1

那么,这取决于。 Go并不是狭隘的:无论什么套件,您的问题更多的是“正确的”解决方案。“ – Volker

回答

0

对于golang,我建议Effective Go-concurrency。特别是我想用golang需要的goroutineparallelization知的基本知识大家:

够程复用在多个操作系统线程,所以如果一个应该阻止,如在等待I/O,其他人继续运行。他们的设计隐藏了许多线程创建和管理的复杂性。

Go运行时的当前实现仅将一个核心用于用户级处理。可以在系统调用中阻止任意数量的goroutines,但默认情况下,只有一个可以随时执行用户级代码。