Event loops are better, since you can emulate threading without the added programming complexity. If your data processing gets too heavy, you can always move it into /timers to lessen the load-- which would be similar to spawning threads.
- argv[0] on EFnet #mIRC - "Life is a pointer to an integer without a cast"