I recently had a need to parallel process some tasks for a non-critical app, but really didn't want it to get out of hand. I wrote this as a simple way to multi-thread without the pain of worrying about synchronizing and queues and being thread safe.
It achieves ghetto thread pooling by chunking the result set into whatever size slice is needed and spins up some threads, once that set is done it will repeat until the data is all processed before moving on.
It ended up working out really well as a direct drop-in, and speeded up the processing greatly. I wouldn't recommend this for production code, however.