pthreadでエラー

poundを拡張して最速応答時間アルゴリズムを実装しようとしている
のだけれども、そのプログラム中でpthreadを用いていて、問題が生じた。
cannot allocate memoryと、言われスレッドが生成できない模様。
スレッドには作れる最大数があるらしくそれにひっかっかっているのではないかと
大学の友人に指摘された。調べてみると確かに_POSIX_THREAD_THREADS_MAX
で指定されているみたい。ぐぐってみると
最大数を超えてcreateしようとすると、pthread_create()がエラーを返す。
まさにこれ。自プロセス中でスレッドの数を数えるにはpthread_createのwrapper
関数を自作するしか方法が無いらしい。
また、聞いた話によるとスレッドの作成破棄はとてもマシンパワーを食うので、
あらかじめスレッドをまとめて作っておいて、後からそのスレッドに仕事をさせる
ようにしてスレッドを再利用することで、マシンパワーを食わないよ。と言われたが
実際どのようにそれを行ったらよいのかわからない。。。