<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/ext/monitor/lib, branch ruby_2_7</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>new_cond before mon_initialize</title>
<updated>2019-12-04T04:36:41+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2019-12-04T04:36:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c6e3db0c66312af1e932c21006437419efa9ac75'/>
<id>c6e3db0c66312af1e932c21006437419efa9ac75</id>
<content type='text'>
MonitorMixin#new_cond can be called before mon_initialize, so we
need to initialize `@monitor` before it.

https://bugs.ruby-lang.org/issues/16255#note-4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
MonitorMixin#new_cond can be called before mon_initialize, so we
need to initialize `@monitor` before it.

https://bugs.ruby-lang.org/issues/16255#note-4
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix documentation of `MonitorMixin#new_cond` [ci skip] (#2707)</title>
<updated>2019-11-28T04:24:01+00:00</updated>
<author>
<name>y-yagi</name>
<email>yuuji.yaginuma@gmail.com</email>
</author>
<published>2019-11-28T04:24:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=18953416def52824c46a68370c4b34f5b720ee3f'/>
<id>18953416def52824c46a68370c4b34f5b720ee3f</id>
<content type='text'>
Since https://github.com/ruby/ruby/pull/2576,
`new_cond` uses the Monitor object, not the receiver.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since https://github.com/ruby/ruby/pull/2576,
`new_cond` uses the Monitor object, not the receiver.</pre>
</div>
</content>
</entry>
<entry>
<title>Native MonitorMixin::ConditionVariable#wait</title>
<updated>2019-10-20T06:45:30+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2019-10-20T06:45:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a236eaa762137d7cb32b8311e0ef9a74bbb0f385'/>
<id>a236eaa762137d7cb32b8311e0ef9a74bbb0f385</id>
<content type='text'>
MonitorMixin::ConditionVariable#wait can be interrupted just after
Monitor#exit_for_cond. So implementation in C.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
MonitorMixin::ConditionVariable#wait can be interrupted just after
Monitor#exit_for_cond. So implementation in C.
</pre>
</div>
</content>
</entry>
<entry>
<title>delegate synchronize method</title>
<updated>2019-10-20T05:21:04+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2019-10-20T05:21:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a0a3c701816c2fe4ab6e940c6cf5638756ceb6dc'/>
<id>a0a3c701816c2fe4ab6e940c6cf5638756ceb6dc</id>
<content type='text'>
Delegate MonitorMixin#synchronize body to Monitor#synchronize.
It makes guarantee interrupt safe (because Monitor#synchronize is
written in C). I thought Ruby implementation is also safe, but I
got stuck failure &lt;http://ci.rvm.jp/results/trunk_test@P895/2327639&gt;
so that I introduce this fix to guarantee interrupt safe.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Delegate MonitorMixin#synchronize body to Monitor#synchronize.
It makes guarantee interrupt safe (because Monitor#synchronize is
written in C). I thought Ruby implementation is also safe, but I
got stuck failure &lt;http://ci.rvm.jp/results/trunk_test@P895/2327639&gt;
so that I introduce this fix to guarantee interrupt safe.
</pre>
</div>
</content>
</entry>
<entry>
<title>make monitor.so for performance. (#2576)</title>
<updated>2019-10-19T19:52:20+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2019-10-19T19:52:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=caac5f777ae288b5982708b8690e712e1cae0cf6'/>
<id>caac5f777ae288b5982708b8690e712e1cae0cf6</id>
<content type='text'>
Recent monitor.rb has performance problem because of interrupt
handlers. 'Monitor#synchronize' is frequently used primitive
so the performance of this method is important.

This patch rewrite 'monitor.rb' with 'monitor.so' (C-extension)
and make it faster. See [Feature #16255] for details.

Monitor class objects are normal object which include MonitorMixin.
This patch introduce a Monitor class which is implemented on C
and MonitorMixin uses Monitor object as re-entrant (recursive)
Mutex. This technique improve performance because we don't need
to care atomicity and we don't need accesses to instance variables
any more on Monitor class.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Recent monitor.rb has performance problem because of interrupt
handlers. 'Monitor#synchronize' is frequently used primitive
so the performance of this method is important.

This patch rewrite 'monitor.rb' with 'monitor.so' (C-extension)
and make it faster. See [Feature #16255] for details.

Monitor class objects are normal object which include MonitorMixin.
This patch introduce a Monitor class which is implemented on C
and MonitorMixin uses Monitor object as re-entrant (recursive)
Mutex. This technique improve performance because we don't need
to care atomicity and we don't need accesses to instance variables
any more on Monitor class.</pre>
</div>
</content>
</entry>
</feed>
