func Run(run func()) {
	callQueue = make(chan func(), CallQueueCap)

	done := make(chan struct{})
	go func() {
		run()
		done <- struct{}{}
	}()

	for {
		select {
		case f := <-callQueue:
			f()
		case <-done:
			return
		}
	}
}
func Run(run func()) {
	callQueue = make(chan func(), CallQueueCap)

	done := make(chan struct{})
	go func() {
		run()
		done <- struct{}{}
	}()

	for {
		select {
		case f := <-callQueue:
			f()
		case <-done:
			return
		}
	}
}
func Run ( run func ( ) ) { callQueue = make ( chan func ( ) , CallQueueCap ) done := make ( chan struct { } ) go func ( ) { run ( ) done <- struct { } { } } ( ) for { select { case f := <- callQueue : f ( ) case <- done : return } } }
// Run enables mainthread package functionality. To use mainthread package, put your main function
// code into the run function (the argument to Run) and simply call Run from the real main function.
//
// Run returns when run (argument) function finishes.
Run enables mainthread package functionality . To use mainthread package put your main function code into the run function ( the argument to Run ) and simply call Run from the real main function . Run returns when run ( argument ) function finishes .