Go 并发

2024 年 8 月 29 日 | 阅读 2 分钟

大型程序被划分为更小的子程序。 程序同时运行其较小的组件被称为并发。

Goroutines

应用程序中同时运行的部分称为 goroutines。 Goroutines 和 channels 用于构建并发程序。

进程是在机器中独立执行的实体,在内存中运行在自己的地址空间中。 进程拥有线程,线程是同时执行的实体。 线程共享进程的相同地址空间。

Goroutines 是轻量级的,比线程轻得多。 Goroutines 在同一地址空间中运行,因此必须同步对共享内存的访问;这可以通过 sync 包完成,但建议使用 channels 来同步 goroutines。

Goroutine 被实现为函数或方法。 它使用“go”关键字调用(调用)。 当 goroutine 完成时,不会向调用者函数返回任何内容。

Go 并发示例

输出

fun2,  -> 0
fun1,  -> 0
fun1,  -> 1
fun2,  -> 1
fun1,  -> 2
fun1,  -> 3
fun2,  -> 2
fun1,  -> 4
fun1,  -> 5
fun2,  -> 3
fun1,  -> 6
fun1,  -> 7
fun2,  -> 4
fun1,  -> 8
fun1,  -> 9
fun2,  -> 5
fun2,  -> 6
fun2,  -> 7
fun2,  -> 8
fun2,  -> 9

下一主题Go 竞争