mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
Check the return code of pthread_create(). Otherwise we go into an infinite
loop if it fails, which is what what happened on my HP-UX box. (I think the reason it failed on that box is a misconfiguration on my behalf, but that's no reason to hang.)
This commit is contained in:
parent
3987e9e620
commit
336db7e347
@ -150,6 +150,7 @@ main(int argc, char *argv[])
|
||||
pthread_t thread1,
|
||||
thread2;
|
||||
int fd;
|
||||
int rc;
|
||||
|
||||
#ifdef WIN32
|
||||
WSADATA wsaData;
|
||||
@ -199,8 +200,23 @@ main(int argc, char *argv[])
|
||||
/* Hold lock until we are ready for the child threads to exit. */
|
||||
pthread_mutex_lock(&init_mutex);
|
||||
|
||||
pthread_create(&thread1, NULL, (void *(*) (void *)) func_call_1, NULL);
|
||||
pthread_create(&thread2, NULL, (void *(*) (void *)) func_call_2, NULL);
|
||||
rc = pthread_create(&thread1, NULL, (void *(*) (void *)) func_call_1, NULL);
|
||||
if (rc != 0)
|
||||
{
|
||||
fprintf(stderr, "Failed to create thread 1: %s **\nexiting\n",
|
||||
strerror(rc));
|
||||
exit(1);
|
||||
}
|
||||
rc = pthread_create(&thread2, NULL, (void *(*) (void *)) func_call_2, NULL);
|
||||
if (rc != 0)
|
||||
{
|
||||
/*
|
||||
* strerror() might not be thread-safe, and we already spawned thread
|
||||
* 1 that uses it
|
||||
*/
|
||||
fprintf(stderr, "Failed to create thread 2 **\nexiting\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
while (thread1_done == 0 || thread2_done == 0)
|
||||
sched_yield(); /* if this is a portability problem, remove it */
|
||||
|
Loading…
Reference in New Issue
Block a user