I discovered the utility of user-interface threads a few weeks ago. This essay captures what I learned. In particular, there are some interesting issues of thread initialization that are not readily addressed. This also discusses why a user-interface thread may have no GUI objects associated with it.
This describes techniques for proper use of worker threads. It is based on several years' experience in programming multithreaded applications..