V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Latin

golang 在 routine 中执行阻塞任务可以实现吗?

  •  
  •   Latin · Aug 27, 2020 · 2220 views
    This topic created in 2070 days ago, the information mentioned may be changed or developed.
    golang 新手请教下在协程中执行死循环任务并调度是否可以实现,没找到太多相关样例
    Supplement 1  ·  Aug 27, 2020
    https://github.com/hybridgroup/gocv/issues/191
    找到了线程不安全的 issue
    14 replies    2020-08-27 19:31:29 +08:00
    looplj
        1
    looplj  
       Aug 27, 2020
    什么意思,for{ // XXX} 不行吗。
    Latin
        3
    Latin  
    OP
       Aug 27, 2020
    @ZSeptember
    解码服务要一直执行,
    相当于一个协程一路解码,
    肯定会阻塞协程,
    刚刚试了几个实现都没成功
    looplj
        4
    looplj  
       Aug 27, 2020
    可以多点上下文吧。再什么场景下,要做什么,达成什么样的效果。
    lbp0200
        5
    lbp0200  
       Aug 27, 2020
    sync.waitgroup
    chensan
        6
    chensan  
       Aug 27, 2020
    不太理解楼主是要什么效果,但是 context 和楼上的 waitgroup 你可以了解下
    Latin
        7
    Latin  
    OP
       Aug 27, 2020
    mengzhuo
        8
    mengzhuo  
       Aug 27, 2020
    这样?


    ch := make(chan, int)

    go func() {

    for i:=0;i<10;i++{
    ch<-i
    time.Sleep(i*500*time.Millisecond)
    }

    }()

    for {
    fmt.Print(<-ch)
    }
    Latin
        9
    Latin  
    OP
       Aug 27, 2020
    @mengzhuo 好的 我试试
    lbp0200
        10
    lbp0200  
       Aug 27, 2020
    @Latin 看样子是 openCV 的问题,可以写成命令行

    cap rtsp://xxx1
    cap rtsp://xxx2
    cap rtsp://xxx3

    这样都是独立的进程,应该就没问题了
    looplj
        11
    looplj  
       Aug 27, 2020
    defer wg.Done() 加到第七行前面,wg.Done 应该要在 goroutine 结束后执行吧。
    Latin
        12
    Latin  
    OP
       Aug 27, 2020
    @lbp0200 gocv 线程不安全 这个方法我觉得可以放弃了
    @ZSeptember 阻塞可以直接放弃 Done 了吧
    looplj
        13
    looplj  
       Aug 27, 2020
    打个日志看看你真实代码传入的 url 列表?感觉运行的时候是个空列表?
    lbp0200
        14
    lbp0200  
       Aug 27, 2020 via iPhone
    @Latin gocv 有示例代码,复制粘贴就好了

    多视频源,就需要启动多个进程
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   982 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 19:26 · PVG 03:26 · LAX 12:26 · JFK 15:26
    ♥ Do have faith in what you're doing.