[#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?
At RubyConf 2005 I gave an off-the-wall little talk about the
Monterey Bay Area Research Institute's
work with Ruby in autonomous marine robotic instruments.
A few months into development with Ruby, we uncovered a
serious problem in the the standard Mutex class
implementation in Ruby 1.6/1.8. It seems appropriate to
mention it here again if folks are considering removing
support for the Thread.critical primitive.
The Mutex class suffers from a race condition when
the mutex is unlocked. See comments below:
-------------------
#
# Releases the lock. Returns +nil+ if ref wasn't locked.
#
def unlock
return unless @locked
Thread.critical = true
@locked = false
#the intent here is to wakeup the thread that has been
#waiting on this Mutex the longest....
begin
t = @waiting.shift
t.wakeup if t
rescue ThreadError
retry
end
Thread.critical = false
#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
begin
t.run if t
rescue ThreadError
end
self
end
-----------------
Further, the Mutex class is not "brain friendly", as another poster put
it,
because it fails when a thread that already has the lock tries to lock
it again.
Monitors (as found in Java) handle this "recursive lock" gracefully and so
are, distinct from, and more practical than, Mutexes.
Our application defines its own Recursive Mutex or RMutex class.
RMutexes are used much like Mutexes, but also handle recursive locks.
And, one may optionally include them as a mixin. It would be very
combersome to write RMutex on top of Ruby's standard
Mutex class. [If anyone is interested in the RMutex class, let me know.]
I fully appreciate that the existing "Thread.critical" primitive cannot
be supported when native OS threading is used. Some form
of atomic test-and-set should replace it rather than the Mutex class.
Atomic test-and-test cannot be coded in Ruby, but Mutex and
whatever other thread synchronization mechanisms a developer might
dream up could be coded in Ruby were it merely to include
an atomic test-and-set.
I'd be interested in implementing test-and-set if there was a chance
it would be incorporated into the Ruby 1.9 standard libraries. I envision
a Fixnum-like object that, upon assignment, returns its previous
value, rather than the new one. Something as simple as:
a = Atomic.new(0)
puts(a=7)
puts a #this may need to be 'puts a.value' or some such...
Outputs:
0
7
Ruby would throw an exception if one attempted to assign an Atomic a
value that not either a Fixnum or another Atomic.
Is anyone already working on something like this?
--
Brent Roman
Software Engineer
mailto:brent@mbari.org http://www.mbari.org/~brent