📜  如何暂停当前 Goroutine 的执行?

📅  最后修改于: 2021-10-24 13:14:20             🧑  作者: Mango

Goroutine 是一个函数或方法,它与程序中存在的任何其他 Goroutines 相关联地独立并同时执行。或者换句话说,Go 语言中每个并发执行的活动都称为 Goroutines。所以在 Go 语言中,你可以使用Sleep()函数来暂停当前 goroutine 的执行。
该函数将当前 goroutine 暂停至少指定的持续时间,在完成指定的持续时间后,goroutine 自动唤醒并恢复其工作。如果此函数的值为负数或零,则此函数立即返回。它定义在 time 包下,因此您必须在程序中导入 time 包才能访问 Sleep函数。

句法:

func Sleep(d_value Duration)

这里, d_value表示您希望让当前 goroutine 休眠的持续时间。它可能以秒、毫秒、纳秒、微秒、分钟等为单位。让我们在给定示例的帮助下讨论这个概念:

示例 1:

// Go program to illustrate how
// to put a goroutine to sleep
package main
  
import (
    "fmt"
    "time"
)
  
func show(str string) {
  
    for x := 0; x < 4; x++ {
        time.Sleep(300 * time.Millisecond)
        fmt.Println(str)
    }
}
  
// Main Function
func main() {
  
    // Calling Goroutine
    go show("Hello")
  
    // Calling function
    show("GeeksforGeeks")
}

输出:

Hello
GeeksforGeeks
GeeksforGeeks
Hello
Hello
GeeksforGeeks
GeeksforGeeks

示例 2:

// Go program to illustrate how
// to put a goroutine to sleep
package main
  
import (
    "fmt"
    "time"
)
  
// Here, the value of Sleep function is zero
// So, this function return immediately.
func show(str string) {
  
    for x := 0; x < 4; x++ {
      
        time.Sleep(0 * time.Millisecond)
        fmt.Println(str)
    }
}
  
// Main Function
func main() {
  
    // Calling Goroutine
    go show("Hello")
  
    // Calling function
    show("Bye")
}

输出:

Bye
Bye
Bye
Bye