Go言語でゴルーチンを強制的に終了させる方法

Go言語では、runtime.Goexit() 関数を使用して現在のゴルーチンを強制終了できます。この関数は現在のゴルーチンの実行を即座に終了し、コントロールをスケジューラに戻します。

これは、runtime.Goexit() 関数を使用して goroutine を強制終了する方法を示すサンプルコードです。

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        defer fmt.Println("协程结束")
        fmt.Println("开始执行协程")
        
        // 强制结束当前协程
        runtime.Goexit()
        
        fmt.Println("这行代码不会被执行到")
    }()

    // 等待协程执行完成
    fmt.Println("主协程执行完毕")
}

上記のコードでは、ゴルーチンを作成してその中でruntime.Goexit()関数をコールすることで、ゴルーチンを強制終了させています。Goexit()関数がコールされると、ゴルーチンはすぐに終了し、defer文で指定した内容が実行されます。この例では、defer文を使用して、ゴルーチンが終了するときにメッセージを出力しています。

以下のコードを実行すると、次のような出力が得られます。

主协程执行完毕
开始执行协程
协程结束

ゴルーチンは、Goexit()関数が呼び出されると直ちに終了し、そのゴルーチン内のその他のコードは実行されなくなります。

bannerAds