DESC
Some compiler versions have problem with declaring a variable just before
using it, so this patch converts threads to a pointer and create it using
malloc().
EDESC

Some older compiler versions complain about "threads" being declared in the
middle of main(), so this patch makes "threads" a pointer and allocates it
using malloc() after we know the number of threads we're going to run.

Thanks to Ron Burkey for noticing this and letting me know.

