aboutsummaryrefslogtreecommitdiff
path: root/src/core/device.h
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-03-29 19:35:09 -0700
committerGarrett D'Amore <garrett@damore.org>2018-03-30 12:38:56 -0700
commit99907b52872d9fc9c68f1af60299dd8476c0a603 (patch)
treeef465cb6c71efe9b5294069627be57f99a8d9f8f /src/core/device.h
parent5f69a5ba55058c7f5bfc4d5a250e72c56f31e0eb (diff)
downloadnng-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/device.h')
0 files changed, 0 insertions, 0 deletions