Posted to #tcl by Whiskey at Thu Mar 21 13:02:41 GMT 2013view raw

  1. # Set packages
  2. package require Thread
  3.  
  4. # Set MasterID
  5. set mid [thread::id]
  6.  
  7. # Set shared variables
  8. tsv::set thread mid $mid
  9.  
  10. # Create ThreadID
  11. set tid [thread::create {
  12.  
  13. # Set packages
  14. package require struct::queue
  15.  
  16. # Create thread proc
  17. proc Start-Thread {one two three} {
  18.  
  19. # Set variables
  20. set mid "[tsv::set thread mid]"
  21. set tid "[tsv::set thread tid]"
  22.  
  23. # Send massage
  24. thread::send $mid [list puts "I was here"]
  25.  
  26. # Exit thread
  27. thread::release $tid
  28. }
  29.  
  30. # Create queue proc
  31. proc isQueue {one two three} {
  32.  
  33. # Create queue
  34. set queue [struct::queue]
  35.  
  36. # Put jobs in queue
  37. $queue put [list Start-Thread "$one" "$two" "$three"]
  38.  
  39. # Check for jobs in queue
  40. while {[$queue size]} {
  41. eval [$queue get]
  42. }
  43.  
  44. # Remove queue
  45. $queue destroy
  46. }
  47. }]
  48.  
  49. thread::send -async $tid [list isQueue "1" "2" "3"]
  50. update
  51.  
  52.