pthread_t thread1,
thread2;
int fd;
+ int rc;
#ifdef WIN32
WSADATA wsaData;
/* 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 */