aboutsummaryrefslogtreecommitdiffstats
path: root/ext/monitor/monitor.c
Commit message (Collapse)AuthorAgeFilesLines
* Monitor#exit: check monitor ownership.Koichi Sasada2019-11-121-10/+15
| | | | | Monitor#exit should be called by only onwer Thread. However, there is not check for it.
* Native MonitorMixin::ConditionVariable#waitKoichi Sasada2019-10-201-15/+42
| | | | | MonitorMixin::ConditionVariable#wait can be interrupted just after Monitor#exit_for_cond. So implementation in C.
* make monitor.so for performance. (#2576)Koichi Sasada2019-10-201-0/+189
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.