Ever since the first graphical user interface, there has been a need to provide users with the feeling that while the computer is crunching numbers, the UI can still respond to input. This is perfectly reasonable: how many physical devices with buttons do you have that suddenly stop responding the moment they start doing any work?
With programming environments that didn’t have threads, this was a challenge. Programmers had to build their own time slicing, do a bit of processing—oh, and now process any user input—and back to processing. Once programmers have threads the problem gets easier: simply have a thread dedicated ...