Saw an archived message yesterday that said, "when one thread blocks, they all block". That matches my experience. I had a timer thread and an interactive-controller thread. But no display updates occur in the timer thread until the user takes an action in the controller thread. What is the point of the having "threads" if they don't allow to use the time that would otherwise be spent waiting? Game programs, interactive timers like the one I was working on, and virtually any program that really /needs/ threads requires non-blocking behavior. On *nix, I can fork a subsidiary process, and that gives me sufficient control for a timer app. But on windows, the fork call says it is "not implemented". So what is a windows app supposed to do?