[#9381] Native Thread extension for 1.8 — "Abhisek Datta" <abhisek@...>
Hello,
[#9382] the sign of a number is omitted when squaring it. -2**2 vs (-2)**2 — <noreply@...>
Bugs item #6468, was opened at 2006-11-03 17:25
On 11/3/06, noreply@rubyforge.org <noreply@rubyforge.org> wrote:
Jacob Fugal wrote:
Hi,
Yukihiro Matsumoto wrote:
[#9385] merge YARV into Ruby — SASADA Koichi <ko1@...>
Hi,
On Nov 3, 2006, at 9:11 PM, SASADA Koichi wrote:
On 11/4/06, SASADA Koichi <ko1@atdot.net> wrote:
On Monday 06 November 2006 16:01, Kirill Shutemov wrote:
On Monday 06 November 2006 10:15, Sylvain Joyeux wrote:
On 11/6/06, Sean Russell <ser@germane-software.com> wrote:
On Monday 06 November 2006 13:37, Kirill Shutemov wrote:
On 11/6/06, Kirill Shutemov <k.shutemov@gmail.com> wrote:
On 11/8/06, Austin Ziegler <halostatue@gmail.com> wrote:
On 11/6/06, ville.mattila@stonesoft.com <ville.mattila@stonesoft.com> wrote:
On 2006-11-07 00:47:20 +0900, Kirill Shutemov wrote:
On 11/6/06, Marcus Rueckert <mrueckert@suse.de> wrote:
On Tue, 7 Nov 2006, Joshua Haberman wrote:
[#9402] fast mutexes for 1.8? — MenTaLguY <mental@...>
Many people have been using Thread.critical for locking because Ruby
On Mon, 6 Nov 2006, MenTaLguY wrote:
On Mon, 2006-11-06 at 23:17 +0900, Hugh Sasse wrote:
On Tue, 7 Nov 2006, MenTaLguY wrote:
On Mon, 6 Nov 2006, MenTaLguY wrote:
On Mon, 2006-11-06 at 23:21 +0900, khaines@enigo.com wrote:
On Mon, 2006-11-06 at 09:38, MenTaLguY wrote:
[#9450] Bikeshed: No more Symbol < String? — Kornelius Kalnbach <murphy@...>
Hi ruby-core!
Hi,
David wrote:
On Nov 7, 2006, at 2:28 AM, Yukihiro Matsumoto wrote:
Hi,
Hi --
Hi,
Too bad, I was rejoicing to remove the need of
[#9470] Ruby performanmce improvements — "Michael Selig" <michael.selig@...>
I know you guys are in the middle of YARV stuff, but I thought you might be
Hi,
[#9472] Re: fast mutexes for 1.8? — Brent Roman <brent@...>
At RubyConf 2005 I gave an off-the-wall little talk about the
[#9493] Future Plans for Ruby 1.8 Series — URABE Shyouhei <shyouhei@...>
This week Japanese rubyists were talking about the future of ruby_1_8
[#9515] External entropy pool for random number generator — "Kirill Shutemov" <k.shutemov@...>
In the attachment patch which allow to use external entropy pool for
Hi,
On 11/13/06, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
Hi,
On 11/13/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
[#9520] Re: fast mutexes for 1.8? — Brent Roman <brent@...>
[#9540] Different return values for setter methods — "Marcel Molina Jr." <marcel@...>
>> class Setter; def set=(value) 1 end end
[#9547] Net::FTP should check the control connection on EPIPE — Simon Williams <simon.williams@...>
Hi,
Hi,
On Tue, Feb 06, 2007 at 11:23:01AM +0900, Shugo Maeda wrote:
[#9554] Ruby 1.[89].\d+ and beyond. — Hugh Sasse <hgs@...>
I've been thinking about how version numbers are restricting what we can do.
On Fri, 17 Nov 2006, Eric Hodel wrote:
On Nov 16, 2006, at 12:02 PM, Hugh Sasse wrote:
On 11/16/06, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 19, 2006, at 6:35 AM, Robert Dober wrote:
On Nov 19, 2006, at 8:13 AM, James Edward Gray II wrote:
> What if we need to exceed 1.8.9?
On Nov 19, 2006, at 10:30 PM, Kornelius Kalnbach wrote:
On Mon, 20 Nov 2006, Eric Hodel wrote:
Hugh Sasse wrote:
[#9572] io_write (io.c) bug (and its fix) under MS Windows for GUI apps (rubyw) — "Mounir Idrassi" <idrassi@...>
Hi all,
[#9581] type information — Deni George <denigeorge@...>
Hi,
Nobuyoshi Nakada wrote:
[#9604] #ancestors never includes the singleton class (inconsistent) — <noreply@...>
Bugs item #6820, was opened at 2006-11-22 08:49
Hi,
> It is supposed to. Singleton classes (or eigenclasses, if you want to
On 11/27/06, Sylvain Joyeux <sylvain.joyeux@m4x.org> wrote:
> 2) You could think of all objects already having a singleton class
Re: fast mutexes for 1.8?
>On Sun, 2006-11-12 at 07:05 +0900, MenTaLguY wrote: >> On Wed, 2006-11-08 at 16:47 +0900, Brent Roman wrote: >> > #BUT...the Mutex is unlocked at this point!!! >> > #so Ruby's thread scheduler can (and sometimes does) >> > #allow another thread to lock this mutex >> > #before thread t runs >>=20 >> In other words, a non-waiting thread could potentially "jump the queue" >> and acquire the lock before a waiting thread. >>=20 >> I've addressed this in my own Mutex implementation and am looking into >> what might need to be done for condition variables along similar lines. > >Addendum: doing some research, it looks like both the Java language >specification and the pthreads manpages permit threads not in the wait >set to acquire the lock. > >I'm going to revert the changes in my Mutex class, since it's probably >better if I don't offer guarantees that can't otherwise be met in any of >stock Ruby 1.8, YARV, or JRuby. > > > I was surprised to hear this, so I, too, did some digging. It's refreshing that this issue is finally being discussed here on ruby-core! The way of determining which thread first acquires a Mutex lock when there are multiple waiters is itself quite "contentious", as demonstrated by this thread on comp.programming.threads: http://groups.google.com/group/comp.programming.threads/browse_thread/thread/d3703aae792a7d18/16c01eac398a1139?&hl=en#16c01eac398a1139 The fast approach is to release the lock, wake all the waiting threads and let the thread scheduler (more or less randomly) choose which runs first. The fair approach is to pass the lock from the thread releasing it, directly to the thread that had been waiting the longest for the it. It appears that both approaches have been tried at various times in the history Linux threading library (in glibc). I'll take your word that the pthread and Java specs remain silent on this issue. My point is that specifying this behavior is critical sometimes. Even acknowledged threading gurus cannot agree on which approach is generally superior. Therefore, I believe Ruby should continue to allow programmers to define thread sychronization primitives in Ruby, at some expense of implementation efficiency over native ones. Unlike Mutexes, the exact semantics of Test-and-Set operations are simple and unambiguous. Test-and-Set is easy to implement and provides the same detailed level of control over thread sychronization that Thread.critical otherwise would. Note that this does not preclude also having a built-in, optimized, Mutex class that calls native pthread or Java libraries. The exact behavior of this built-in Ruby Mutex class will, however, be platform dependent. Some applications will break on various platforms as a result. >*MenTaLguY wrote:* > >It's worth pointing out that a locking primitive implemented atop a >"native" mutex and condition variable(s) would likely be faster than one >implemented atop an atomic test-and-set operation in Ruby, because in >the latter case you'd need to incur a lot of method calls to do all your >wait queue management in Ruby (one of the reasons the current Mutex is >so slow). > > > Implementing a "fair" mutex atop a native mutex would require that the native library and Ruby both manage queues of waiting threads. So, I cannot see how it will be faster than a "fair" mutex atop O(1) test-and-set operations, although, the overhead for the native library's thread queue management will admittedly be quite small compared to Ruby's. Am I missing an important point here? -- Brent Roman mailto:brent@mbari.org http://www.mbari.org/~brent