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

# Set packages
package require Thread

# Set MasterID
set mid [thread::id]

# Set shared variables
tsv::set thread mid $mid

# Create ThreadID
set tid [thread::create {

	# Set packages
	package require struct::queue

	# Create thread proc
	proc Start-Thread {one two three} {

	# Set variables
	set mid "[tsv::set thread mid]"
	set tid "[tsv::set thread tid]"

	# Send massage
	thread::send $mid [list puts "I was here"]

	# Exit thread
	  thread::release $tid
	}

	# Create queue proc
	proc isQueue {one two three} {

		# Create queue
		set queue [struct::queue]

		# Put jobs in queue
		$queue put [list Start-Thread "$one" "$two" "$three"]

		# Check for jobs in queue
		while {[$queue size]} {
		  eval [$queue get]
		}

		# Remove queue
		$queue destroy
	}
}]

thread::send -async $tid [list isQueue "1" "2" "3"]
update