diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pulsecore/thread-posix.c | 9 | ||||
-rw-r--r-- | src/pulsecore/thread.h | 1 | ||||
-rw-r--r-- | src/tests/thread-test.c | 4 |
3 files changed, 11 insertions, 3 deletions
diff --git a/src/pulsecore/thread-posix.c b/src/pulsecore/thread-posix.c index 6ca46d70..4c12ec93 100644 --- a/src/pulsecore/thread-posix.c +++ b/src/pulsecore/thread-posix.c @@ -25,6 +25,7 @@ #include <assert.h> #include <pthread.h> +#include <sched.h> #include <atomic_ops.h> @@ -116,6 +117,14 @@ pa_thread* pa_thread_self(void) { return pa_tls_get(thread_tls); } +void pa_thread_yield(void) { +#ifdef HAVE_PTHREAD_YIELD + pthread_yield(); +#else + sched_yield(); +#endif +} + pa_tls* pa_tls_new(pa_free_cb_t free_cb) { pa_tls *t; diff --git a/src/pulsecore/thread.h b/src/pulsecore/thread.h index 978e9927..9b99c8c2 100644 --- a/src/pulsecore/thread.h +++ b/src/pulsecore/thread.h @@ -33,6 +33,7 @@ void pa_thread_free(pa_thread *t); int pa_thread_join(pa_thread *t); int pa_thread_is_running(pa_thread *t); pa_thread *pa_thread_self(void); +void pa_thread_yield(void); typedef struct pa_tls pa_tls; diff --git a/src/tests/thread-test.c b/src/tests/thread-test.c index a93ac1e4..120d2554 100644 --- a/src/tests/thread-test.c +++ b/src/tests/thread-test.c @@ -23,8 +23,6 @@ #include <config.h> #endif -#include <sched.h> - #include <pulsecore/thread.h> #include <pulsecore/mutex.h> #include <pulsecore/log.h> @@ -73,7 +71,7 @@ static void thread_func(void *data) { /* Spin! */ for (n = 0; n < k; n++) - sched_yield(); + pa_thread_yield(); pa_mutex_lock(mutex); } |