threads: don't join thread if pthread_create failed; fix error messages

This commit is contained in:
Robert Falkenberg 2022-09-20 11:50:12 +02:00
parent 19918d9a67
commit ffc9ca5591
1 changed files with 5 additions and 6 deletions

View File

@ -146,18 +146,17 @@ bool threads_new_rt_cpu(pthread_t* thread, void* (*start_routine)(void*), void*
int err = pthread_create(thread, attr_enable ? &attr : NULL, start_routine, arg);
if (err) {
if (EPERM == err) {
// Join failed thread for avoiding memory leak from previous trial
pthread_join(*thread, NULL);
perror("Warning: Failed to create thread with real-time priority. Creating it with normal priority");
fprintf(stderr,
"Warning: Failed to create thread with real-time priority. Creating it with normal priority: %s\n",
strerror(err));
err = pthread_create(thread, NULL, start_routine, arg);
if (err) {
perror("pthread_create");
fprintf(stderr, "Error: Failed to create thread with normal priority: %s\n", strerror(err));
} else {
ret = true;
}
} else {
perror("pthread_create");
fprintf(stderr, "Error: Failed to create thread with real-time priority: %s\n", strerror(err));
}
} else {
ret = true;