[
https://issues.apache.org/jira/browse/PROTON-752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14218434#comment-14218434
]
Dominic Evans commented on PROTON-752:
--------------------------------------
No I mean whenever a Cproton call won't return inmediately. For example, a
blocking messenger.receive. At the moment we keep the GIL locked during that
call until it completes. So in a multithreaded Ruby application, no other
threads can make progress until that returns.
> Ruby: Cproton calls don't unlock the GIL for blocking / long-running
> operations
> -------------------------------------------------------------------------------
>
> Key: PROTON-752
> URL: https://issues.apache.org/jira/browse/PROTON-752
> Project: Qpid Proton
> Issue Type: Bug
> Components: ruby-binding
> Affects Versions: 0.8
> Reporter: Dominic Evans
> Assignee: Darryl L. Pierce
> Priority: Minor
>
> Currently the I/O-style calls to the Cproton methods don't unlock the Ruby
> GIL, impacting performance as other Threads could be given time on the
> interpreter whilst the extension code is running.
> Depending on Ruby version this is simply a matter of wrapping the calls in
> rb_thread_call_without_gvl (Ruby 2.x +) or rb_thread_blocking_region (Ruby
> 1.9.x). On Ruby 1.8 I'm not sure if you can enable this, but its my
> understanding that RHEL requires continued support for 1.8, so some #define
> work would be needed to perform a no-op on that version.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)