久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

在Go語言中如何處理并發任務取消問題

162次閱讀
沒有評論

共計 813 個字符,預計需要花費 3 分鐘才能閱讀完成。

在 Go 語言中處理并發任務取消問題,可以使用 context 包來管理和取消任務。
首先,使用 context 包創建一個上下文對象,例如:

ctx, cancel := context.WithCancel(context.Background())
defer cancel()

然后,在并發的任務中通過 select 語句來監聽取消信號,例如:

select {case <-ctx.Done():
// 任務被取消,執行清理操作
return
default:
// 執行任務操作
// ...
}

如果要取消任務,可以調用 cancel 函數,例如:

cancel()

當調用 cancel 函數時,所有使用同一個 context 對象的協程都會收到取消信號,從而停止執行任務。
完整的示例代碼如下:

package main
import (
"context"
"fmt"
"time"
)
func main() {ctx, cancel := context.WithCancel(context.Background())
defer cancel()
go worker(ctx, "worker1")
go worker(ctx, "worker2")
time.Sleep(3 * time.Second)
cancel()
time.Sleep(1 * time.Second)
}
func worker(ctx context.Context, name string) {
for {
select {case <-ctx.Done():
fmt.Printf("%s: 任務被取消 \n", name)
return
default:
fmt.Printf("%s: 執行任務 \n", name)
time.Sleep(1 * time.Second)
}
}
}

運行上述代碼,會輸出如下結果:

worker1: 執行任務
worker2: 執行任務
worker1: 執行任務
worker2: 執行任務
worker1: 任務被取消
worker2: 任務被取消 

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-13發表,共計813字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 东海县| 迭部县| 泸水县| 沂南县| 仙游县| 裕民县| 无锡市| 阜新市| 泰宁县| 神木县| 永嘉县| 滨海县| 兴仁县| 沭阳县| 岳普湖县| 弥勒县| 沅陵县| 隆林| 白河县| 灵丘县| 布尔津县| 闸北区| 西乌珠穆沁旗| 深圳市| 武威市| 蒲城县| 霍林郭勒市| 桦甸市| 大石桥市| 百色市| 东港市| 施秉县| 敦化市| 灌阳县| 公主岭市| 武冈市| 安阳市| 汉源县| 田阳县| 五莲县| 饶阳县|