Threads... it's one of those things for which the programming is quite different between Windows and Linux, and even small behavior differences can have bad consequences.
With the megatexture technology in ETQW, we rely on threads to read data from the disk (one thread), and process it from storage format into a GPU format (another thread). On single core systems it's important to have those threads running at a lower priority than the game thread so it doesn't hitch. If the megatexture threads are running slower, the megatexture takes more time to stream and render at max resolution, and you have your basic quality/performance trade-off; which is fine.
So I investigated setting thread priorities on Linux 2.6 NPTL kernels. The pthread API provides various functions to that purpose (pthread_attr_setschedparam, pthread_setschedparam) but it turns out those won't work on Linux systems. Still, NPTL kernels manage threads in the same way they manage individual processes, so there had to be a way to set individual priorities. It turns out that using getpriority/setpriority works fine. It's not as clean as pthreads, because you have to wrap the thread start procedure into your own function to do the calls, but hey it works.
I haven't checked, but using the pthread API should work on BSD systems. Anyhow, kernel developers have been quite obsessed with good scheduling lately, a nice step for us lowly userland programmers would be to complete the functionality in the pthreads implementation.