pthread portability

Поиск
Список
Период
Сортировка
От Michael McConville
Тема pthread portability
Дата
Msg-id 20160328071525.GB2182@thinkpad.swarthmore.edu
обсуждение исходный текст
Ответы Re: pthread portability  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Список pgsql-hackers
The below diff fixes one problem: you can't compare pthread_t values
directly. Only the function pthread_equal(3) is defined. Direct
comparison usually works because most implementations define pthread_t
as an integer type.

Relatedly, INVALID_THREAD is defined as (pthread_t)0. I don't think this
is a portable way of checking whether a thread is valid, and I don't
know if it's actually possible to get an "invalid" thread out of
pthread_create(3) if it succeeds (returns 0). In the cases where you're
setting a pthread_t to INVALID_THREAD, maybe using a struct that
includes a pthread_t and a 'valid' bool would be preferable.

Thanks for your time,
Michael


diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 4196b0e..f2e5aed 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -3791,7 +3791,7 @@ main(int argc, char **argv)        {            int            err =
pthread_create(&thread->thread,NULL, threadRun, thread);
 
-            if (err != 0 || thread->thread == INVALID_THREAD)
+            if (err != 0 || pthread_equal(thread->thread, INVALID_THREAD))            {                fprintf(stderr,
"couldnot create thread: %s\n", strerror(err));                exit(1);
 
@@ -3819,7 +3819,7 @@ main(int argc, char **argv)        TState       *thread = &threads[i];#ifdef
ENABLE_THREAD_SAFETY
-        if (threads[i].thread == INVALID_THREAD)
+        if (pthread_equal(threads[i].thread, INVALID_THREAD))            /* actually run this thread directly in the
mainthread */            (void) threadRun(thread);        else
 



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Krauss
Дата:
Сообщение: help for old extension, first_last_agg bug in install with pg9.5
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: pthread portability