亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

golang怎么強制結束一個協程

小億
251
2023-10-20 21:40:42
欄目: 編程語言

在Go語言中,要強制結束一個協程,可以使用context.Context來實現。

context.Context是Go語言中用來傳遞上下文信息的標準庫。它可以用來控制協程的生命周期,包括取消一個協程。

以下是一個使用context.Context取消協程的示例代碼:

package main

import (
	"context"
	"fmt"
	"time"
)

func main() {
	// 創建一個空的context
	ctx := context.TODO()

	// 啟動一個協程
	go worker(ctx)

	// 等待一段時間
	time.Sleep(2 * time.Second)

	// 取消協程
	cancelCtx, cancel := context.WithCancel(ctx)
	cancel()

	// 等待協程退出
	time.Sleep(1 * time.Second)
}

func worker(ctx context.Context) {
	for {
		select {
		case <-ctx.Done():
			fmt.Println("worker canceled")
			return
		default:
			// 在這里執行具體的邏輯
			fmt.Println("working...")
			time.Sleep(500 * time.Millisecond)
		}
	}
}

在上面的代碼中,首先創建了一個空的context,然后啟動了一個協程,該協程會在接收到取消信號時退出。

main函數中,等待了2秒后,調用context.WithCancel創建了一個帶有取消功能的context,并調用cancel函數取消了協程。最后等待協程退出。

運行該代碼,你會看到協程會在接收到取消信號后退出,并打印出"worker canceled"。

0
布尔津县| 宾阳县| 利川市| 闸北区| 南阳市| 西昌市| 渝北区| 天等县| 岱山县| 屏边| 博爱县| 通辽市| 玉门市| 永嘉县| 松桃| 大田县| 柞水县| 阿鲁科尔沁旗| 吉隆县| 安丘市| 新泰市| 昌宁县| 洛浦县| 普陀区| 南丰县| 荆州市| 霍邱县| 牡丹江市| 太康县| 宣城市| 利津县| 涡阳县| 齐齐哈尔市| 于都县| 洛阳市| 沅陵县| 林州市| 汪清县| 油尖旺区| 富川| 霍邱县|