diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-01-01 14:34:29 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-01-01 14:34:29 -0800 |
| commit | 3fd43c488b47874db22a87a1d87eed94bbd85725 (patch) | |
| tree | ed9fe38b370c9a6162ac05596b91adfac9cb5579 /src/platform | |
| parent | c7b541af4a1a2c410dc63a638a17adb31d7342a3 (diff) | |
| download | nng-3fd43c488b47874db22a87a1d87eed94bbd85725.tar.gz nng-3fd43c488b47874db22a87a1d87eed94bbd85725.tar.bz2 nng-3fd43c488b47874db22a87a1d87eed94bbd85725.zip | |
Pipe simplifications for thread management.
This may also address a race in closing down pipes. Now pipes are always
registered with the socket. They also always have both a sender and receiver
thread. If the protocol doesn't need one or the other, the stock thread just
exits early.
Diffstat (limited to 'src/platform')
| -rw-r--r-- | src/platform/posix/posix_impl.h | 4 | ||||
| -rw-r--r-- | src/platform/posix/posix_thread.c | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/platform/posix/posix_impl.h b/src/platform/posix/posix_impl.h index 5ca7812f..5c5c3798 100644 --- a/src/platform/posix/posix_impl.h +++ b/src/platform/posix/posix_impl.h @@ -54,8 +54,8 @@ struct nni_plat_thr { }; struct nni_plat_cv { - pthread_cond_t cv; - pthread_mutex_t *mtx; + pthread_cond_t cv; + pthread_mutex_t * mtx; }; #endif diff --git a/src/platform/posix/posix_thread.c b/src/platform/posix/posix_thread.c index 0c928d84..d1944879 100644 --- a/src/platform/posix/posix_thread.c +++ b/src/platform/posix/posix_thread.c @@ -175,6 +175,7 @@ nni_plat_cv_init(nni_plat_cv *cv, nni_plat_mtx *mtx) return (0); } + void nni_plat_cv_wake(nni_plat_cv *cv) { @@ -185,6 +186,7 @@ nni_plat_cv_wake(nni_plat_cv *cv) } } + void nni_plat_cv_wait(nni_plat_cv *cv) { @@ -195,6 +197,7 @@ nni_plat_cv_wait(nni_plat_cv *cv) } } + int nni_plat_cv_until(nni_plat_cv *cv, nni_time until) { @@ -217,9 +220,9 @@ nni_plat_cv_until(nni_plat_cv *cv, nni_time until) nni_panic("pthread_cond_timedwait: %d", rv); } return (0); - } + void nni_plat_cv_fini(nni_plat_cv *cv) { @@ -230,6 +233,7 @@ nni_plat_cv_fini(nni_plat_cv *cv) } } + int nni_plat_thr_init(nni_plat_thr *thr, void (*fn)(void *), void *arg) { @@ -262,7 +266,6 @@ nni_atfork_child(void) } - int nni_plat_init(int (*helper)(void)) { |
