[#2320] Problems in mathn, rational, complex, matrix — Gavin Sinclair <gsinclair@...>
I received a message from Richard Graham mentioning a problem in the
[#2346] Patch for socket.c: control reverse lookup for every instance — Thomas Uehlinger <uehli@...>
Hi all
[#2357] Use the BasicSocket#do_not_reverse_lookup flag in Webrick — Thomas Uehlinger <uehli@...>
Hi
[#2367] Standard libraries — Dave Thomas <dave@...>
From ruby-dev summary:
Hi,
Hi,
By the way, this issue is about a matter of taste, so the debate is somewhat
Hi,
On Thu, Feb 12, 2004 at 02:58:22PM +0900, NAKAMURA, Hiroshi wrote:
On Thursday, February 12, 2004, 8:18:32 PM, Mauricio wrote:
On Thursday 12 February 2004 04:37, Gavin Sinclair wrote:
On Friday, February 13, 2004, 12:44:15 AM, Sean wrote:
(Dave Thomas: there's a question for you in the second paragraph; if you're
[#2397] PATCH: deprecate cgi-lib, getopts, importenv, parsearg from standard library — Gavin Sinclair <gsinclair@...>
Index: cgi-lib.rb
* Gavin Sinclair (gsinclair@soyabean.com.au) wrote:
On Thursday, February 12, 2004, 11:39:37 PM, E wrote:
Hi,
Hi,
[#2422] Re: [ruby-cvs] ruby: * lib/ftools.rb: documented — "U.Nakamura" <usa@...>
Hello,
[#2449] make install not getting through rdoc phase — "David A. Black" <dblack@...>
Hi --
[#2465] PATCH: OpenStruct#initialize to yield self — Gavin Sinclair <gsinclair@...>
This is a common approach I use to object initialization; I don't know
On Fri, 20 Feb 2004 02:42:00 +0900, Dave Thomas wrote:
> > As more general suggestion. Could 'new' yield the new object is a block
On Fri, 20 Feb 2004 08:24:31 +0900, Carlos wrote:
Hi,
Yukihiro Matsumoto wrote:
On Feb 20, 2004, at 4:33 PM, Joel VanderWerf wrote:
[#2494] rehash segfault — Nathaniel Talbott <nathaniel@...>
I don't have a lot of information on this bug at this point, but
Hi,
On Wed, Feb 25, 2004 at 03:30:54AM +0900, Yukihiro Matsumoto wrote:
[#2504] foldl and foldr — "Sean E. Russell" <ser@...>
Sorry if I'm opening old wounds; I have a hard time believing that nobody has
Re: rehash segfault
On Wed, Feb 25, 2004 at 05:44:30PM +0900, Yukihiro Matsumoto wrote:
> In message "Re: rehash segfault"
> on 04/02/25, Eivind Eklund <eivind@FreeBSD.org> writes:
>
> |> Ruby hashes are not completely thread-safe. I knew the problem
> |> existed, but I couldn't fix it without significant slow-down.
> |
> |What is the exact problem that makes it hard to fix without slowdown?
>
> Hash calls back a few Ruby methods, e.g. "hash", "eql?", etc, during
> which context switch may happen. To avoid this, the easiest way is to
> prepare mutex for each hash and protect every hash operation, that, I
> think, cause significant slow-down.
This is a fun problem! :-)
As far as I can tell, the only "atomic"[1] ops available in the
ruby source code are the ATOMIC_ code in rubysig.h. Is this correct?
I *think* I can do an implementation based on sequencing all rehashes,
turning rehash into an incremental operation where elements are moved
from the old to the new map, tracking active/quiscent maps, and having a
hash lookup during a rehash look into both the old and the new table.
This would give the following extra cost compared to a non-threadsafe
variant:
For read and write:
1 ATOMIC_INC for starting
1 ATOMIC_DEC for ending
One extra test of a pointer variable
During rehashing:
Partial extra scan (need to both scan the present table and the
table being buit)
One extra ATOMIC_INC
One extra ATOMIC_DEC
For rehashing:
One mutex test (no parallell rehashing allowed)
The extra memory for one table (but that's used in the present
implementation anyway)
A wait for the old map to become quiescent, which would correspond
to the time used to do a lookup in the old table.
Would this be an acceptable extra cost?
Eivind.
[1] The present implementation is not guaranteed atomic for the
non-Windows case, though it will probably often be atomic in
practice.