中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

golang同步執行任務怎么實現

小億
92
2023-10-22 01:32:34
欄目: 編程語言

在Go中,可以通過goroutine和channels來實現任務的同步執行。具體步驟如下:

  1. 創建一個通道,用于任務之間的通信。
  2. 在一個goroutine中執行任務,并將結果發送到通道中。
  3. 在主goroutine中,從通道中接收結果,直到所有任務都完成。

以下是一個簡單的示例代碼:

package main

import "fmt"

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        // 執行任務
        fmt.Println("worker", id, "started job", j)
        // 模擬任務耗時
        for i := 0; i < 100000000; i++ {
        }
        fmt.Println("worker", id, "finished job", j)
        // 將結果發送到通道中
        results <- j * 2
    }
}

func main() {
    // 創建任務通道和結果通道
    jobs := make(chan int, 5)
    results := make(chan int, 5)

    // 啟動3個goroutine執行任務
    for w := 1; w <= 3; w++ {
        go worker(w, jobs, results)
    }

    // 發送5個任務到任務通道中
    for j := 1; j <= 5; j++ {
        jobs <- j
    }
    close(jobs) // 關閉任務通道,表示任務已經發送完畢

    // 從結果通道中讀取結果,直到所有任務都完成
    for a := 1; a <= 5; a++ {
        <-results
    }
}

在上面的示例中,我們創建了一個有5個緩沖區的任務通道和一個有5個緩沖區的結果通道。然后,我們啟動了3個goroutine來執行任務,并通過任務通道將任務分發給它們。每個goroutine執行完任務后,將結果發送到結果通道中。

在主goroutine中,我們發送了5個任務到任務通道中,并關閉通道,表示任務已經發送完畢。然后,我們從結果通道中讀取結果,直到所有任務都完成。

這樣就實現了任務的同步執行。

0
华蓥市| 邵东县| 元氏县| 平南县| 贺州市| 三都| 屏山县| 东阿县| 文化| 合江县| 昆山市| 稻城县| 隆尧县| 汉源县| 兴文县| 清水河县| 高密市| 柯坪县| 马鞍山市| 策勒县| 军事| 乌鲁木齐县| 利辛县| 南安市| 南澳县| 深圳市| 虹口区| 麻阳| 黄大仙区| 林西县| 景泰县| 西贡区| 姜堰市| 潞西市| 临安市| 安达市| 翁源县| 高邑县| 华亭县| 灵武市| 明水县|