diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-03-29 19:35:09 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-03-30 12:38:56 -0700 |
| commit | 99907b52872d9fc9c68f1af60299dd8476c0a603 (patch) | |
| tree | ef465cb6c71efe9b5294069627be57f99a8d9f8f /src/core/thread.c | |
| parent | 5f69a5ba55058c7f5bfc4d5a250e72c56f31e0eb (diff) | |
| download | nng-99907b52872d9fc9c68f1af60299dd8476c0a603.tar.gz nng-99907b52872d9fc9c68f1af60299dd8476c0a603.tar.bz2 nng-99907b52872d9fc9c68f1af60299dd8476c0a603.zip | |
fixes #317 TLS, TCP, and IPC should support multiple outstanding ops
fixes #22 Consider using synchronous completions sometimes
Transport improvements for IPC, TCP, and TLS.
This change does three things.
First it permits multiple outstanding receives or sends on the transport.
This change is being made to accomodate some other changes in the protocols
where it might be advantageous to post send or receives directly against
the transport pipe without going through another level of indirection.
Second, it changes the normal completions to be performed synchronously.
This translates into a rather major performance improvement, reducing
latency by some 27%, and thereby improving performance altogether. (This
elminates two extra context switches per transaction!)
FInally, we can save some extra checks and conditions because we know
that completions cannot happen if we don't have a pending operation
(we no longer complete out of sequence), and we only call the dosend
operation when we have something to send. This can eliminate some
pipeline stalls.
Diffstat (limited to 'src/core/thread.c')
0 files changed, 0 insertions, 0 deletions
