aboutsummaryrefslogtreecommitdiff
path: root/src/core/pipe.h
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-08-05 00:26:37 -0700
committerGarrett D'Amore <garrett@damore.org>2017-08-05 00:26:37 -0700
commit719bc93e11f6607d302d908475b240e1d50f5a89 (patch)
tree885da39473db379d0b914df55f2555316b6fe5b6 /src/core/pipe.h
parenta40ab9c52768044fa8f8b74e43bcc23637417f7a (diff)
downloadnng-719bc93e11f6607d302d908475b240e1d50f5a89.tar.gz
nng-719bc93e11f6607d302d908475b240e1d50f5a89.tar.bz2
nng-719bc93e11f6607d302d908475b240e1d50f5a89.zip
Use a dedicated reap thread instead of taskq.
The problem is that reaping these things performs some blocking operations which can tie up slots in the taskq, preventing other tasks from running. Ultimately this can lead to a deadlock as tasks that are blocked wind up waiting for tasks that can't get scheduled. Blocking tasks really should not run on the system taskq.
Diffstat (limited to 'src/core/pipe.h')
-rw-r--r--src/core/pipe.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/pipe.h b/src/core/pipe.h
index b8f6d90a..40871062 100644
--- a/src/core/pipe.h
+++ b/src/core/pipe.h
@@ -34,7 +34,7 @@ struct nni_pipe {
int p_refcnt;
nni_mtx p_mtx;
nni_cv p_cv;
- nni_task p_reap_task;
+ nni_list_node p_reap_node;
nni_aio p_start_aio;
};