… | |
… | |
648 | 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, |
648 | 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, |
649 | 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, |
649 | 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, |
650 | 0x2d02ef8dL |
650 | 0x2d02ef8dL |
651 | }; |
651 | }; |
652 | |
652 | |
|
|
653 | void thread::start (void *(*start_routine)(void *), void *arg) |
|
|
654 | { |
|
|
655 | sigset_t fullsigset, oldsigset; |
|
|
656 | sigfillset (&fullsigset); |
|
|
657 | |
|
|
658 | pthread_sigmask (SIG_SETMASK, &fullsigset, &oldsigset); |
|
|
659 | |
|
|
660 | if (pthread_create (&id, 0, start_routine, arg)) |
|
|
661 | cleanup ("unable to create a new thread"); |
|
|
662 | |
|
|
663 | pthread_sigmask (SIG_SETMASK, &oldsigset, 0); |
|
|
664 | } |