You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Justin Ross (JIRA)" <ji...@apache.org> on 2016/11/04 03:57:58 UTC
[jira] [Updated] (PROTON-889) Thread safe pn_io_t
[ https://issues.apache.org/jira/browse/PROTON-889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Justin Ross updated PROTON-889:
-------------------------------
Labels: close-pending (was: )
> Thread safe pn_io_t
> -------------------
>
> Key: PROTON-889
> URL: https://issues.apache.org/jira/browse/PROTON-889
> Project: Qpid Proton
> Issue Type: Improvement
> Components: proton-c
> Reporter: Cliff Jansen
> Labels: close-pending
>
> It has been pointed out before that the pn_io API does not allow thread safe use of
> pn_error_t *pn_io_error(pn_io_t *io)
> bool pn_wouldblock(pn_io_t *io);
> For the moment, this JIRA serves as a reminder. I am hesitant to propose a specific solution without a solid outline of an actual implementation using it. We have the following use cases:
> - moderately scalable single threaded implementation using Proton's selector/selectable classes
> - custom selector/IO just using the Proton engine (i.e. Dispatch, Qpid C++ client/broker, no pn_io at all)
> - external loop with direct calls to pn_io methods
> The ultimate performance would come from the custom IO route optimized for the particular work load using engine primitives. But given that Proton is (at least mostly) thread safe on a per socket/connection basis (i.e. use by Dispatch), it would seem that additional parallelization could be achieved with various API changes (not just to pn_io methods).
> So, again with the disclaimer that an actual implementation should drive this, some options could be
>
> 6 new calls
> pn_io_XXXX(io, selectable, buf, len); (send/recv/write/read)
> pn_selectable_wouldblock(selectable);
> pn_selectable_error(selectable);
> 4 new calls
> pn_io_XXXX(io, socket, buf, len, bool *wouldblock, pn_error_t *err)
> Assuming the existing single threaded use cases should not be burdened with locking overhead, other related changes might include customized incref and decref functions per pn_class_t, external custom collectors (and surely more).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org