a lot of comments here, including the OP, simply miss the point. I work in the embedded world; I work on embedded electronics for the automotive sector. I write C and C++ code that is multi-threaded and I deal with things such as the CAN and LIN bus and watchdog timers. Just the mere comment that a watchdog "is very low load on the system" is a disturbing comment to me. It's a signal you think that the watchdog need not be very accurate and that you can slip a few milliseconds. Simply not true. When you miss your timing things stop working. Your hardware reboots itself if the watchdog isn't kicked on time, you wind up with bus errors on a vehicle network if you don't send the LIN break signal precisely on time or you're preempted when you've sent the break and now you're breaks are too long. When things like this happen, you effect other hardware. Most of these articles talking about threads, processes, and scheduling of such never seem to account for interfacing with external hardware. Many of it is simply wrong.