<p>In the past I've worked with a number of programmers who have worked exclusively writing GUI applications.</p>

<p>And I've been given the impression that they have almost universally minimised the use of multiple threads in their applications. In some cases they seem to have gone to extreme lengths to ensure that they use a single thread.</p>

<p>Is this common? Is this the generally accepted philosophy for gui application design?</p>

<p>And if so, why?</p>

<p>[edit]</p>

<p>There are a number of answers saying that thread usage should be minimised to reduce complexity. Reducing complexity in general is a good thing.</p>

<p>But if you look at any number of applications where response to external events is of paramount importance (eg. web servers, any number of embedded applications) there seems to be a world of difference in the attitude toward thread usage.</p>

I think in terms of windows you are limited to all GUI operations happening on a single thread - because of the way the windows message pump works, to increase responsivness most apps add at least one additional worker thread for longer running tasks that would otherwise block and make the ui unresponsive.
Threading is fundamentally hard and so thinking in terms or more than a couple threads can often result in a lot of debugging effort - there is a quote that escapes me right now that goes something like - "if you think you understand threading then you really dont"