--- deliantra/server/common/utils.C 2008/04/11 21:09:52 1.74 +++ deliantra/server/common/utils.C 2008/05/04 14:12:37 1.77 @@ -33,14 +33,13 @@ #include #include -#include #include #include refcnt_base::refcnt_t refcnt_dummy; ssize_t slice_alloc; -rand_gen rndm; +rand_gen rndm, rmg_rndm; void tausworthe_random_generator::seed (uint32_t seed) @@ -651,13 +650,24 @@ void thread::start (void *(*start_routine)(void *), void *arg) { + pthread_attr_t attr; + + pthread_attr_init (&attr); + pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); + pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN < sizeof (long) * 4096 + ? sizeof (long) * 4096 : PTHREAD_STACK_MIN); +#ifdef PTHREAD_SCOPE_PROCESS + pthread_attr_setscope (&attr, PTHREAD_SCOPE_PROCESS); +#endif + sigset_t fullsigset, oldsigset; sigfillset (&fullsigset); pthread_sigmask (SIG_SETMASK, &fullsigset, &oldsigset); - if (pthread_create (&id, 0, start_routine, arg)) + if (pthread_create (&id, &attr, start_routine, arg)) cleanup ("unable to create a new thread"); pthread_sigmask (SIG_SETMASK, &oldsigset, 0); } +