Protothreads and Other Wicked C Tricks

I've always been fascinated by code along these lines. We used similar tricks in the early 90's to force Windows 3.1 to pre-emptively multitask with background DOS processes. It used to amaze people at trade shows that we could kill their voice processes by starting the paint program and holding down the mouse button, while ours kept right on answering the phone (and allowing paint to draw). Seems trivial in this day and age of XP, the Internet and Unix based systems, but back then, well, that was some trick!

Interesting to note that embedded systems with tiny memory footprints can still used this kind of magic efficiently.

For those of you interested in interesting hard-core C programming tricks: Adam Dunkels' protothreads library implements an unusually lightweight type of threads. Protothreads are not real threads, but rather something in between an event-driven state machine and regular threads. But they are implemented in 100% portable ANSI C and with an interesting but quite unintuitive use of the switch/case construct. The same trick has previously been used by Simon Tatham to implement coroutines in C. The trick was originally invented by Tom Duff and dubbed Duff's device. You either love it or you hate it!

(link) [Slashdot]

00:00 /Technology | 0 comments | permanent link