在go中调用runtime.GOMAXPROCS(1)时,运行时将只对所有goroutines使用一个线程。在执行io时,您的goroutines将会让步,并让其他goroutines在同一线程上运行。
在我看来,这与.net Async CTP特性在不使用后台线程的情况下如何进行协作并发非常相似。
我的问题是,你认为一种方法比另一种方法有什么优点或缺点。
发布于 2011-09-20 12:07:29
做出价值判断总是一件棘手的事情,所以我将强调三个不同点。你决定他们是属于“支持”还是“反对”。
.NET实现首先需要添加前面提到的新API。此外,.NET的实现是基于编译器将带有async/await的代码重写为等效的状态机。它非常聪明,但也相当复杂。实际的结果是,第一个异步CTP有已知的错误,而Go的实现从一开始就工作得很好。
归根结底,这并不重要。async/await是在.NET中编写异步代码的最佳方式,Goroutines是在Go中获得异步代码的最佳方式。这两种语言都很棒,特别是与大多数其他语言的替代语言相比。
https://stackoverflow.com/questions/7479276
复制相似问题