Change getpid() while loop to use sched_yield(), greatly speeds up test.
authorBruce Momjian <bruce@momjian.us>
Mon, 5 Apr 2004 14:12:32 +0000 (14:12 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 5 Apr 2004 14:12:32 +0000 (14:12 +0000)
sched_yield is a requirement for the test but not for our PostgreSQL
code, so if it causes a portability problem, we will remove it.

src/tools/thread/thread_test.c

index d7ea309d243b8d5dfe8738fe09667f46375ef50e..903462755f11d7f6ae06f1e0609b9bddb9eaae5a 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/tools/thread/thread_test.c,v 1.13 2004/04/05 05:43:06 momjian Exp $
+ * $PostgreSQL: pgsql/src/tools/thread/thread_test.c,v 1.14 2004/04/05 14:12:32 momjian Exp $
  *
  * This program tests to see if your standard libc functions use
  * pthread_setspecific()/pthread_getspecific() to be thread-safe.
@@ -83,7 +83,7 @@ defines to your template/$port file before compiling this program.\n\n"
    pthread_create(&thread2, NULL, (void * (*)(void *)) func_call_2, NULL);
 
    while (thread1_done == 0 || thread2_done == 0)
-       getpid();   /* force system call */
+       sched_yield();  /* force system call */
 
    printf("Add this to your template/$port file:\n\n");
 
@@ -129,7 +129,7 @@ void func_call_1(void) {
     */
    errno1_set = 1;
    while (errno2_set == 0)
-       getpid();   /* force system call */
+       sched_yield();  /* force system call */
    if (errno != EEXIST)
    {
            fprintf(stderr, "errno not thread-safe; exiting\n");
@@ -184,7 +184,7 @@ void func_call_2(void) {
     */
    errno2_set = 1;
    while (errno1_set == 0)
-       getpid();   /* force system call */
+       sched_yield();  /* force system call */
    if (errno != ENOENT)
    {
            fprintf(stderr, "errno not thread-safe; exiting\n");