GO(Golang)的并发
#云 #go #discuss #cloudcomputing

GO(或Golang)使使用Goroutines,Channels和Select语句立即进行许多事情变得容易。让我们逐步将其分解。

1。 goroutines:

在Go中,Goroutine就像计算机可以处理的迷你任务。就像有多个可以一起工作的帮助者。启动goroutine很简单:

go functionName()

只需在您要同时执行的函数之前将单词“ go”放在。想象一下,这就像告诉您的计算机:“嘿,在我做其他事情的时候执行此任务!”

例如:

func sayHello() {
    fmt.Println("Hello from a helper!")
}

func main() {
    go sayHello()
    fmt.Println("Hello from the main task!")
}

在此代码中,助手说“你好”,而主要任务也说“你好”。有时,助手可能会先完成,有时主要任务可能会先完成。就像一场小比赛!

2。频道:

频道就像特殊的管子,可以帮助助手(goroutines)互相交谈。他们可以发送和接收消息。就像朋友之间的笔记一样。

这是您制作频道的方式:

ch := make(chan int)

这会创建一个可以携带数字的通道。您可以从中发送并获取数据:

go func() {
    ch <- 42  // Sending 42 through the channel
}()

value := <-ch  // Getting a value from the channel
fmt.Println(value)

3。选择语句:

SELECT语句就像一个助手,一次观看多个通道。就像有人在看多个电话打电话一样。当任何电话打来电话时,他们都会接听。

例如:

select {
case msg1 := <-ch1:
    fmt.Println("Got", msg1)
case msg2 := <-ch2:
    fmt.Println("Got", msg2)
case ch3 <- 3:
    fmt.Println("Sent 3 to ch3")
default:
    fmt.Println("No messages")
}

此选择的助手倾听到不同的通道。如果任何频道上的消息都会出现,它会做点什么。如果许多频道都有消息,它会选择一个渠道来回答。这就像一个多任务助手!

快速提示:

  • 否共享内存:Goroutines与频道交谈,因此我们不必担心直接共享信息。这就像通过笔记谈论而不是与玩具战斗。

  • 缓冲通道:通道可以在阅读之前保存消息。就像一个可以存储字母的邮箱。

  • 范围和关闭:当没有更多消息到来时,可以关闭频道。您也可以使用范围读取所有消息,例如收集所有糖果。

  • 同步软件包:有一个称为同步软件包的特殊工具。当事情变得更加复杂时,它会有所帮助,例如许多帮助者需要一起工作。

结论:

一次做很多事情的方式聪明又容易。这就像有帮助者,通过渠道交谈并使用选择来管理它们。这比旧的一起做很多事情要简单得多。

感谢您的阅读。我鼓励您在Twitter上关注我,我经常分享有关JavaScript和反应的内容,并为开源项目和学习Golang做出贡献。我目前正在寻找远程工作或实习。

Twitter:https://twitter.com/Diwakar_766

github:https://github.com/DIWAKARKASHYAP

投资组合:https://diwakar-portfolio.vercel.app/