qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Banner <mark95...@gmail.com>
Subject Re: [c++] Multi-threaded proton and C++11
Date Mon, 04 Apr 2016 07:55:47 GMT
I completely agree Alan. We have recently been doing something very similar
internally in C++03 and the C++11 primitives are sourly missed. We have
managed to not use std::function by having a certain number of hardcoded
events which can be sent to a connection engine and using custom
promises/futures to retrieve the result.
Overall a lot of complexity is added by reimplementing features which are
available in C++11.

On Fri, Apr 1, 2016 at 5:47 PM, Alan Conway <aconway@redhat.com> wrote:

> I am working on a multi-threaded broker example for proton C++ and I am
> becoming more and more convinced that it doesn't make much sense to try
> to do this without C++11.
> There are two classes of issue:
> API:
> - inject() needs a way to represent a callback function. Without
> std::function this is very difficult.
> - for memory-safe multi-threaded we will need to expose
> shared_ptr/unique_ptr in the public API (the proton refcounting scheme
> is not thread safe.)
> Implementation: initially the multi-threaded broker impl will be
> independent of the single-threaded proton core but at some point we
> will want to provide some thread-safe toolkit as part of the C++ API,
> which internally needs atomics, mutexes etc.
> Originally we talked about keeping proton based on C++03. I'd like to
> propose we maintain that for the single-threaded but use C++11 in
> thread-safe and shared_ptr extensions.
> If someone wants to add a boost version of those extensions at some
> point that would be fine by me, but I plan to work initially with
> C++11.
> Thoughts?
> Alan.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message