我想知道这里的日常工作是如何进行的。
1 package main
2
3 import "fmt"
4
5 func main() {
6 msg := make(chan string, 2) //channel (bidirectional channel) of type string
7
8 msg <- "hi whats up"
9 fmt.Println("*****I am main go routine*****")
10
11 go func() {
12 fmt.Println("*****HI ABHI *****\n")
13 temp := <-msg
14 fmt.Println(temp)
15 msg <- "Hello from a goroutine!" //send a string through the channel
16 }()
17
18 fmt.Println("Main routine waiting for message")
19
20 fmt.Println(<-msg) //receive the string from the channel
21 fmt.Println(<-msg)
22 }
获取以下错误:
*****我是主要的围棋套路*****
等待消息的主例程
goroutine 5[chan receive]:
main.main.func1(0xC420054060)
/users/work/go/src/github.com/golang_play/goroutine/goroutine.go:13+0x98由main.main/users/work/go/src/github.com/golang_play/goroutine/goroutine.go:11+0xe2退出状态2
同样,在下面的程序中,第14行永远不会打印。
5 func main() {
6 msg := make(chan string, 2) //channel (bidirectional channel) of type string
7
8 msg <- "hi whats up"
9 fmt.Println("*****I am main go routine*****")
10
11 go func() {
12 fmt.Println("*****HI ABHI *****\n")
13 temp := <-msg
14 fmt.Println(temp)
15 //msg <- "Hello from a goroutine!" //send a string through the channel
16 }()
您试图在同一通道上以两种方式发送消息,并且您没有做任何事情来保证谁读了哪些消息。在func
goroutine尝试从通道读取之前,主goroutine完全有可能接收到它发送的消息。如果发生这种情况,两个goroutines都会被困在等待永远不会到达的消息上。
用两个通道。
我不明白,当我为5分配内存时,它会打印出一个示例。我知道可以使用strncpy来完成,但有没有一种方法可以不使用strncpy来完成呢 它适用于strncpy,但有没有办法在没有strncpy的情况下做到这一点? 打印出一个示例 不应该打印OneE吗??有人能解释一下吗?
问题内容: 我试图了解Go中的并发性。特别是,我编写了以下线程不安全程序: 我认识到我应该使用渠道来防止与发生竞争,但这不是重点。程序打印,然后似乎永远循环(不再打印任何内容)。我希望它能打印出无限的数字列表,可能由于竞态条件而跳过某些数字并重复其他数字(或更糟的是,在更新数字时打印数字)。 我的问题是:为什么程序只打印一行? 只是要清楚一点:对于这个玩具示例,我不是故意使用渠道。 问题答案: 关
我这里有3个实体A、B和C。 实体A和实体B都与实体C有关系。在我的例子中,我有一个来自实体A的当前id,并且我想使用来自实体C的查询到达实体B。 多谢了。
我试图更多地了解Go的通道和goroutine,所以我决定制作一个小程序,从对象读取的文件中计算单词: 现在,在我发现的大多数示例中,和通道都将被缓冲,比如。但是,在运行这段代码之后,我的程序仍然存在一个错误消息。 基本上,我认为我需要两个通道:一个通道将文件中的行与goroutine通信(因为它可以是任意大小的,所以我不认为我需要在函数调用中通知大小);另一个通道将从goroutine收集结果,
上节我们介绍了不同平台(Windows、Linux 和 Mac OS X)下常用的 IDE,大家肯定希望赶紧实践一下,用 IDE 真正地运行一段C语言代码来看看效果,这样能够更快地获得成就感。 但是,使用 IDE 的过程中会涉及到一些与编程有关的概念,这些概念如果不提前了解,即使能够运行出程序来,也是雾里看花,知其然不知其所以然。本节的目标就是让大家对这些概念有一个简单的了解。 1) 源文件(So
问题内容: 我试图在全球范围内安装,然后使用和这样的: 我看到了通常的输出,也看到了将文件复制到全局路径的操作,但是如果我尝试这样做,则会收到一条错误消息,指出未找到该模块。 我正在使用node和npm的最新版本,并且我已经知道npm在全局安装与本地安装中所做的更改,但是我 真的不想 在每个项目上都安装localy,并且我正在一个没有不支持,因此对我而言无法全局安装。 我的问题是:为什么我不需要全