I ran this snippet
    
    
    from os import sleep
    from random import random, randomize
    from times import cpuTime
    import threadpool
    
    var chan: Channel[string]
    chan.open
    
    proc chanWaiting() {.thread.} =
      let start = cpuTime()
      var lastTime = cpuTime()
      while true:
        let current = cpuTime()
        if current - lastTime > 0.25:
          echo "Already waiting for ", current - start
          lastTime = current
        
        var res = tryRecv chan
        if res.dataAvailable:
          echo "Got message: ", res.msg
          break
    
    proc chanSending(sleeping: int) {.thread.}=
      let msg = "Hello nice world"
      let hold = random sleeping
      echo "Hold it first for ", hold, " ms"
      sleep hold
      chan.send msg
    
    proc main =
      randomize()
      let sleeping = 2000 # 2 seconds
      
      let start = cpuTime()
      spawn chanWaiting()
      spawn chanSending(sleeping)
      sync()
      echo "Operation is finished after ", cpuTime() - start
    
    main()
    

However, when I compiled it with `--cc:vcc` , it's only running the spawned of 
`chanWaiting` and never sending the message in `chanSending`.

Using gcc is no problem. Does anyone have idea why?

Thanks in advance. 

Reply via email to