码迷,mamicode.com
首页 > Web开发 > 详细

https://github.com/golang/go/wiki/CommonMistakes

时间:2020-01-09 00:52:35      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:return   difficult   faq   channel   develop   ESS   some   statement   ring   

CommonMistakes

 

https://golang.org/doc/faq#closures_and_goroutines

 

 

Why is there no goroutine ID? 

Goroutines do not have names; they are just anonymous workers. They expose no unique identifier, name, or data structure to the programmer. Some people are surprised by this, expecting the go statement to return some item that can be used to access and control the goroutine later.

The fundamental reason goroutines are anonymous is so that the full Go language is available when programming concurrent code. By contrast, the usage patterns that develop when threads and goroutines are named can restrict what a library using them can do.

Here is an illustration of the difficulties. Once one names a goroutine and constructs a model around it, it becomes special, and one is tempted to associate all computation with that goroutine, ignoring the possibility of using multiple, possibly shared goroutines for the processing. If the net/http package associated per-request state with a goroutine, clients would be unable to use more goroutines when serving a request.

Moreover, experience with libraries such as those for graphics systems that require all processing to occur on the "main thread" has shown how awkward and limiting the approach can be when deployed in a concurrent language. The very existence of a special thread or goroutine forces the programmer to distort the program to avoid crashes and other problems caused by inadvertently operating on the wrong thread.

For those cases where a particular goroutine is truly special, the language provides features such as channels that can be used in flexible ways to interact with it.

https://github.com/golang/go/wiki/CommonMistakes

标签:return   difficult   faq   channel   develop   ESS   some   statement   ring   

原文地址:https://www.cnblogs.com/yuanjiangw/p/12168666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!