To mvr: Thank you for the additional information. Because of the nature of this application, I am concerned with maximum performance in other threads.
Blocking in the main thread would not be a problem for this headless app, since the quit callback is called there and obvously no panel updates. However, I had planned to put two TSQ callbacks in the main thread, thinking that would be efficient. Sounds like I either need to do the main thread like Menchar suggested (use RunUserInteface with a blank panel), or put the TSQ callbacks into the threads with their TSQ writers.