[nanomsg] status update on nng

  • From: "Garrett D'Amore" <garrett@xxxxxxxxxx>
  • To: "nanomsg@xxxxxxxxxxxxx" <nanomsg@xxxxxxxxxxxxx>
  • Date: Sat, 4 Mar 2017 02:56:56 -0800

Some of you may have noticed that github and email have been quiet lately.
This is for a couple of reasons.  Based on other findings with testing, I
found that scalability was severely limited on some platforms with
threading, and that has caused me to rethink the architecture of libnng.

At the same time, I was burning out a bit and needed a break to think about
other things.  There was a couple of weeks of reduced activity as a result.

I’m pleased to say I’m back on task now.  I’ve been working in an offline
branch which I will be pushing momentarily.  This branch is currently
horribly broken, since it represents a work in progress and I have had to
make breaking changes.

That said, I’m pleased that so far things are coming together.  I’ve got a
callback-driven form of the pipeline protocol with the inproc transport
working quite well.  I have a temporary emulation of the callback form of
POSIX transport using threads (until I can get a little more time to write
up a poll/kqueue/epoll variant).

Fundamentally, the big architectural hurdle is behind me now.  The new
library is built on top of a generic “aio” structure, which represents an
I/O operation of some form, along with a callback routine to call when that
is complete.  These routines will be executed by a relatively small number
of I/O threads performing the poll/kqueue work on POSIX, or using the I/O
completion port callbacks on Windows.  For my internal message queues, the
completions are called directly, although I use a global taskq (with a pool
of threads) to avoid deadlocks.

More on this as I have it — but progress is again being made. :-)

 - Garrett

Other related posts:

  • » [nanomsg] status update on nng - Garrett D'Amore