Posted to tcl by pooryorick at Tue May 24 18:22:09 GMT 2016view raw

  1. package require {ycl coro relay}
  2. namespace import [yclprefix]::coro::relay
  3.  
  4. dict set tasks [relay call 0 cl::Buffer copy $a] 1
  5. dict set tasks [relay call 0 cl::Buffer copy $b] 2
  6. for {set i 0} {$i < 2} {incr i} {
  7. set device_buf [relay receive]
  8. catch {relay receive} result options
  9. set t [dict get tasks [dict get $options -id]]
  10. kernel_$t bind $device_buf
  11. dict set tasks2 [relay call kernel_$t execute] $t
  12. }
  13. for {set i 0} {$i < 2} {incr i} {
  14. catch {relay receive} result options
  15. set result_[dict get $tasks2 [dict get $options -id]] $result
  16. }
  17. do something with $result_1 $result_2
  18.