美文网首页
Golang 并发处理任务,同时同步反馈处理任务的结果

Golang 并发处理任务,同时同步反馈处理任务的结果

作者: 承诺一时的华丽 | 来源:发表于2022-03-03 11:56 被阅读0次
  • Demo示例:
func connCmSoft(index int, result chan map[string]string, wg *sync.WaitGroup) {
    defer wg.Done()
    println(fmt.Sprintf("正在执行任务:%d", index))
    time.Sleep(time.Duration(index) * time.Second)
    result <- map[string]string{fmt.Sprintf("%d", index): "这是任务结果"}
}

func TestCMSoft(t *testing.T) {
    var (
        resultChan = make(chan map[string]string, 10)
        wg         = new(sync.WaitGroup)
    )

    for i := 0; i < 10; i++ {
        wg.Add(1)
        go connCmSoft(i, resultChan, wg)
    }

    wg.Wait()
    println("wg 任务组完成.")
    close(resultChan)
    for res := range resultChan {
        t.Log("任务反馈数据:", res)
    }
    println("任务全部执行完成")
}
  • 执行结果
=== RUN   TestCMSoft
正在执行任务:9
正在执行任务:0
正在执行任务:6
正在执行任务:1
正在执行任务:2
正在执行任务:7
正在执行任务:8
正在执行任务:5
正在执行任务:3
正在执行任务:4
wg 任务组完成.
    main_test.go:112: 任务反馈数据: map[0:这是任务结果]
    main_test.go:112: 任务反馈数据: map[1:这是任务结果]
    main_test.go:112: 任务反馈数据: map[2:这是任务结果]
    main_test.go:112: 任务反馈数据: map[3:这是任务结果]
    main_test.go:112: 任务反馈数据: map[4:这是任务结果]
    main_test.go:112: 任务反馈数据: map[5:这是任务结果]
    main_test.go:112: 任务反馈数据: map[6:这是任务结果]
    main_test.go:112: 任务反馈数据: map[7:这是任务结果]
    main_test.go:112: 任务反馈数据: map[8:这是任务结果]
    main_test.go:112: 任务反馈数据: map[9:这是任务结果]
任务全部执行完成
--- PASS: TestCMSoft (9.00s)

相关文章

  • Golang 并发处理任务,同时同步反馈处理任务的结果

    Demo示例: 执行结果

  • 并发,并行 | 同步,异步 | 阻塞,非阻塞

    并发:一个处理器同时处理多个任务,在多个任务间快速切换,实现多任务同时运行的效果。称为并发 并行:多个任务同时进行...

  • 17.多线程下-锁

    并发:一个系统有处理多个任务的能力,单核CPU即可并行:一个系统有 同时 处理多个任务的能力,单核CPU不可 同步...

  • (四):并发编程基础

    1.并行,并发的区别 并发 concurrency:一台处理器上同时处理任务, 这个同时实际上是交替处理多个任务,...

  • 并行与并发的区别

    并发:一个处理器同时处理多个任务。并行:多个处理器或者是多核的处理器同时处理多个不同的任务。看下图:

  • 并发与并行的区别

    并发:一个处理器同时处理多个任务。 并行:多个处理器或者是多核的处理器同时处理多个不同的任务. 前者是逻辑上的同时...

  • 多线程同步与互斥机制

    1、多线程并行和并发的区别 并行:多个处理器或者多核处理器同时执行多个不同的任务。 并发:一个处理器处理多个任务。...

  • java面试题(三)

    Java 多线程模块 1、并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务。 并发:多个任务在...

  • Java并发之Executor(返回结果处理)

    运行多个任务并处理第一个结果 运行多个任务并处理所有结果 运行多个任务并处理第一个结果 并发编程常见的问题,就是当...

  • 并发和并行的区别

    并发指的是系统能够同时处理多个任务。并行指的是系统能够同时运行多个任务。 处理未必是运行。多个任务可以先存下来,然...

网友评论

      本文标题:Golang 并发处理任务,同时同步反馈处理任务的结果

      本文链接:https://www.haomeiwen.com/subject/lwyrrrtx.html