[#321574] Regular Expressions — Mmcolli00 Mom <mmc_collins@...>

Hi everyone.

15 messages 2008/12/01

[#321655] Ruby cgi script — ZippySwish <fischer.jan@...>

I put "script.rb" into the cgi-bin folder of my webhost, but nothing's

12 messages 2008/12/02

[#321733] FFI 0.2.0 — "Wayne Meissner" <wmeissner@...>

Greetings Rubyists.

20 messages 2008/12/03

[#321920] Force a program to stop if runtime exceeds given duration — Aldric Giacomoni <"aldric[remove]"@...>

Any idea how to do that?

25 messages 2008/12/04
[#321924] Re: Force a program to stop if runtime exceeds given duration — "Glen Holcomb" <damnbigman@...> 2008/12/04

On Thu, Dec 4, 2008 at 10:04 AM, Aldric Giacomoni <"aldric[remove]"@

[#322011] Re: Force a program to stop if runtime exceeds given duration — Ron Fox <fox@...> 2008/12/05

See http://www.ruby-doc.org/core-1.9/classes/Process.html#M003012

[#322016] Re: Force a program to stop if runtime exceeds given duration — Aldric Giacomoni <"aldric[remove]"@...> 2008/12/05

Everybody automatically assumes that rubyists are using Linux - sadly,

[#321969] Are there any Ruby Technical Writers here? — Vito Fontaine <vito.matro@...>

I am a beginner with Ruby who was interested in writing some programs.

15 messages 2008/12/04
[#321975] Re: Are there any Ruby Technical Writers here? — Robert Klemme <shortcutter@...> 2008/12/04

On 04.12.2008 22:43, Vito Fontaine wrote:

[#321984] Re: Are there any Ruby Technical Writers here? — Vito Fontaine <vito.matro@...> 2008/12/05

Robert Klemme wrote:

[#322014] Proximity searches in Ruby — Stuart Clarke <stuart.clarke1986@...>

Does Ruby have the ability to perform proximity searches on data. For

14 messages 2008/12/05
[#322056] Re: Proximity searches in Ruby — Ilan Berci <coder68@...> 2008/12/05

No proximity searches with 1.8.. you would need a full fledged text

[#322073] shoes 2 (raisins) is go. — _why <why@...>

Salutations and hi.

13 messages 2008/12/06

[#322260] Help on algorythm — Helder Oliveira <hrpoliveira@...>

Guys i have been trying to make this algorythm but with no sucess, can

13 messages 2008/12/09
[#322261] Re: Help on algorythm — "Glen Holcomb" <damnbigman@...> 2008/12/09

On Tue, Dec 9, 2008 at 7:44 AM, Helder Oliveira <hrpoliveira@gmail.com>wrote:

[#322283] Completely new programmer lacks direction — Cameron Carroll <ubernoobs@...>

Hi. I recently picked up a beginning ruby book, having only lightly

17 messages 2008/12/09

[#322285] compare 2 text files - check for difference - Please help — Mmcolli00 Mom <mmc_collins@...>

Hi. I want to take two files that are supposed to be identical, then ook

12 messages 2008/12/09
[#322301] Re: compare 2 text files - check for difference - Please help — Brian Candler <b.candler@...> 2008/12/09

Mmcolli00 Mom wrote:

[#322306] Re: compare 2 text files - check for difference - Please help — Mmcolli00 Mom <mmc_collins@...> 2008/12/09

require 'diff/lcs/Array'

[#322417] why Hash corrupts 'key' object ? — Dmitry Perfilyev <dmitry1976@...>

Hi, I have next script:

13 messages 2008/12/10

[#322464] Q: FFI and C++? — Jeremy Henty <onepoint@...>

If I want to wrap a C++ library using FFI, can it cope with the name

14 messages 2008/12/11

[#322516] Invoking Ruby code from a low-level language? — Alex Fulton <a.fulton@...>

Hi, my sincerest apologies if this question has already been answered

11 messages 2008/12/11

[#322529] parallel method return value — Louis-Philippe <default@...>

Hi all,

17 messages 2008/12/12

[#322566] How to run background processes (more than 1 worker) parallely. — "Deepak Gole" <deepak.gole8@...>

Hi

10 messages 2008/12/12

[#322624] singleton methods vs. meta instance methods — Daniel DeLorme <dan-ml@...42.com>

If I understand the ruby object model correctly, then an object's

15 messages 2008/12/13

[#322705] ruby 1.9.1: Encoding trouble: broken US-ASCII String — Tom Link <micathom@...>

Hi,

22 messages 2008/12/14

[#322710] Help with an "easy" regular expression substitution — Iñaki Baz Castillo <ibc@...>

Hi, I'm getting crazy to get a theorically easy substitution:

16 messages 2008/12/14

[#322819] Pure Ruby Zlib::GzipWriter — Daniel Berger <djberg96@...>

Hi,

53 messages 2008/12/15
[#323877] Re: Pure Ruby Zlib::GzipWriter — Daniel Berger <djberg96@...> 2009/01/03

[#323903] Re: Pure Ruby Zlib::GzipWriter — Roger Pack <rogerpack2005@...> 2009/01/04

[#324011] Re: Pure Ruby Zlib::GzipWriter — Daniel Berger <djberg96@...> 2009/01/05

[#324442] Re: Pure Ruby Zlib::GzipWriter — Luis Lavena <luislavena@...> 2009/01/10

On Jan 9, 9:26=A0pm, "Charles L." <aquas...@gmail.com> wrote:

[#322987] Using ruby hash on array — Stuart Clarke <stuart.clarke1986@...>

I would like to process some data from an array and using hash to

14 messages 2008/12/17

[#323085] Ruby and Rails supported on 10gen — "Jim Menard" <jim.menard@...>

http://www.10gen.com/blog/2008/12/ruby-support-on-10gen

11 messages 2008/12/18

[#323166] Dreaming of a Ruby Christmas (#187) — Matthew Moss <matt@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

11 messages 2008/12/19

[#323204] get first and last line from txt file - how? — Mmcolli00 Mom <mmc_collins@...>

I have txt file with date/time stamps only. I want to grab the first

19 messages 2008/12/20
[#323205] Re: get first and last line from txt file - how? — Tim Hunter <TimHunter@...> 2008/12/20

Mmcolli00 Mom wrote:

[#323207] Re: get first and last line from txt file - how? — "Yaser Sulaiman" <yaserbuntu@...> 2008/12/20

I'm just wondering..

[#323273] how to make installing Ruby easier for amateurs — Tom Cloyd <tomcloyd@...>

Greetings!

21 messages 2008/12/22

[#323312] Name that data structure! — Simon Chiang <simon.a.chiang@...>

I'm using a data structure that I'm sure has been implemented and

18 messages 2008/12/22
[#323314] Re: Name that data structure! — "Gregory Brown" <gregory.t.brown@...> 2008/12/22

On Mon, Dec 22, 2008 at 5:38 PM, Simon Chiang <simon.a.chiang@gmail.com> wrote:

[#323342] Are all Ruby built-in objects thread safe? — "Just Another Victim of the Ambient Morality" <ihatespam@...>

Are all built-in objects thread safe? For example, if I have an array

23 messages 2008/12/23
[#323346] Re: Are all Ruby built-in objects thread safe? — Yukihiro Matsumoto <matz@...> 2008/12/23

Hi,

[#323519] What does 'Monkey Patching' exactly Mean in Ruby? — "Yaser Sulaiman" <yaserbuntu@...>

According to Wikipedia, a monkey patch[1] is:

36 messages 2008/12/27
[#323813] Re: What does 'Monkey Patching' exactly Mean in Ruby? — Jg W Mittag <JoergWMittag+Usenet@...> 2009/01/02

Phlip wrote:

[#323832] Re: What does 'Monkey Patching' exactly Mean in Ruby? — "David A. Black" <dblack@...> 2009/01/02

Hi --

[#323644] Why Ruby? — Mike Stephens <rubfor@...>

I have never seen or heard of Ruby in a corporate context. The single

35 messages 2008/12/30

[#323668] Ruby 1.9.1 RC1 is released — "Yugui (Yuki Sonoda)" <yugui@...>

Hi, folks

21 messages 2008/12/30

Re: Are all Ruby built-in objects thread safe?

From: "Robert Dober" <robert.dober@...>
Date: 2008-12-27 14:22:15 UTC
List: ruby-talk #323515
On Sat, Dec 27, 2008 at 12:59 PM, Robert Klemme
<shortcutter@googlemail.com> wrote:
> On 26.12.2008 19:17, Robert Dober wrote:
>>
>> On Fri, Dec 26, 2008 at 11:24 AM, Robert Klemme
>> <shortcutter@googlemail.com> wrote:
>
> <snip>full quote</snip>
>
> Please invest a bit more time in quoting and trimming.  I may speak for m=
e
> only but I find it unnecessary hard to follow a discussion when there is =
a
> full quote and no clear indication of references in your reply.
Oh this was bad work, I messed up, my apologies.
>
>> Robert, IIUC we do not want either the one, nor the other.
>
> What are you referring to with "one" and "other"?
IIRC, because I indeed lost context, sorry again, I meant that your
observations, however useful and learned, did not have a direct impact
to what Charles wants here. Look e.g. at the synchronized containers
in Java. They are thread safe and yet all your concerns are still
valid. In other words you are already talking about problems of the
next level of abstraction while the level below still has problems. So
all I wanted to say is that we still should tackle the low level
thread-safety.
>
>> For what I am concerned one would need Read/Write Locks.
>
> Why?
Because we want simultaneous read access. And that was the other point
I referred to in my reply, we do not want to do exclusive reads.
>
>> The built in methods like [] and []=3D would obtain read and write
>> locks, while the read lock automatically obtains a write lock and only
>> releases it when its count is to zero, the write lock would inhibit
>> the read lock to be obtained.
>
> Let's first talk about semantics not jump into implementation.  How the r=
ead
> write locking is implemented is rather unimportant for the question what
> kind of additional locking we want to propose for default collections (if
> any).  As far as I can see three variants are lying on the table with the
> lock free collection always be present as well:
>
>
> 3. read write locking with the usual semantics, allowing multiple methods
> with read semantic to be executed concurrently or at most one "write" met=
hod
> at a time.  "write" lock excludes any "read" locks.
3 by all means
>
>> I do not know if one should allow user access to these locks? My first
>> thought would be no, all we want to do is to have thread-safe Hash,
>> Array, String but not to provide advanced synchronization mechanisms.
>> OTOH one could expose the write_lock and read_lock of each object
>> which would allow for the following
>>
>> hash =3D TS_Hash::new
>> ..
>> dat =3D hash.read_synchronize do
>>   if hash.has_key? key then
>>      hash[ key ]
>>   else
>>      hash.write_synchronize do
>>        hash[key] =3D compute_data( key )
>>      end
>>  end
>> end
>
> This is a bad idiom because it is prone to deadlocking.
That was my point to show why I am against exposure of the internal RW lock=
.
I guess I did not make that clear either :(
>  When having
> multiple levels of locks you must only go from stronger to weaker locks, =
not
> the other way round.  Otherwise this can happen
>
> t1: read lock
> t2: read lock
> t1: write lock (deadlock, blocked by t2's read lock)
I disagree, write lock upgrade should throw an exception.
>
> See also
> http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/Reentr=
antReadWriteLock.html
I am quite fond of Doug Lea's Read Write Lock from Java Threads but I
will definitely have a look.
>
>> N.B. We have to solve the interlock problem here as normally the
>> write_synchronize does not obtain the write_lock
>> as the read_synchronize did get a read_lock. We would need to grant
>> the write lock if the read_lock is obtained by the current thread
>> *only*,
>
> With this definition you force code to obtain a read lock before the writ=
e
> lock can be held.  I assume you mean that the rule should rather be "gran=
t
> the write lock only if no other thread holds the read lock" - which is wh=
at
> rw locking usually does.
Here I messed up again, you got it right, but this was not a stupid
error, I just got it wrong :(
>
>> but imagine two threads waiting for the write_lock while
>> containing the read_lock, the good old
>> philosophers-forks-spoon-spaghetti interlock. [ That is why we eat
>> spaghetti with a fork only ;) ]
>
> Exactly, as show above.
>
Yup
>> Therefore I guess the RW-locking in a ThreadSafe Container class shall
>> rather not be exposed as we avoiding interlocking is not that
>> complicated IIRC
>>
>> And if we expose read_synchronize &blk, and write_synchronize &blk we
>> should probably raise something like an IllegalMonitorState exception
>> if a thread tries to call the one inside the other.
>
> Not necessarily: read_synchronize inside write_synchronize is perfectly o=
k
> although it has no noticeable effect.  But since it can occur in another
> method it is reasonable to allow it.
Hmm we have not yet defined the semantics of this, you were right when
complaining about my jump to implementation, right now I do not see
the need for this but I will try to make my home work.
>
> Some more remarks about the complexity of read write locking can be found
> here
>
> http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/ReadWr=
iteLock.html
>
> For the interested Wikipedia also has a number of pages on the matter
> "locking":
>
> http://en.wikipedia.org/wiki/Lock_(computer_science)
>
> Now, what would be reasonable to provide in a thread safe standard
> collection?  IMHO the discussion above and the complexity and wide varian=
ce
> in implementation choices for read write locking makes it next to impossi=
ble
> to come up with an optimal read write lock implementation in standard
> collections for most application scenarios.
I agree but we should opt for a down the middle road.
>
> This yields a bad cost benefit ratio for option 3 above.  This leaves us
> with options 1 and 2.  I lean toward option 1 because even the dead simpl=
e
> exclusive lock approach is of limited use only.  Even in light of default
> values or the default_proc of a Hash there are some things to note.
I fail to see why 3 is so costly, I mean why optimize. Thread
programming is complex (that's why we all love immutable objects,
right ;) and I fail to see why one could hope that it becomes less
complex just because we add
a small but still useful feature.
>
> Consider
>
> # assuming Synchronize() wraps an instance with a delegator
> # which synchronizes all method calls on a single lock
> $all_values =3D Synchronize(Hash.new {|h,k| h[k] =3D Synchronize([])})
> ...
> # in multiple threads:
> $all_values[some_key] << item
>
> While our basic locking ensures internal state of all collections is
> consistent the code has the disadvantage that every thread needs to obtai=
n
> two locks and the number of locks is not limited (1 + no of keys).  A sin=
gle
> lock would be sufficient here.
>
> Another disadvantage of built in locking is that it might trick some peop=
le
> in believing that this is all they need to use to get thread safe code.  =
If
> there would be no such thing as a default thread safe Array and Hash peop=
le
> are forced to think about how they want to go about locking and I believe
> that way they will get better (i.e. more correct and more efficient) code=
.
No please that really could be said against any progress. Furthermore
I believe that folks asking for
thread safe collections know mostly why they do that, after all thread
safety is not a hype.
>
> As a compromise I suggest to provide something like the Synchronize() met=
hod
> I showed above which does two things: 1. it extends the object passed wit=
h
> MonitorMixin and 2. it wraps the instance with another instance which
> synchronizes all methods like this:
>
>  class SynchWrapper
>    def initialize(o)
>      @obj =3D o.extend(::MonitorMixin)
>    end
>
>    # remove all Object methods
>
>    def method_missing(*a,&b)
>       @obj.synchronize { @obj.__send__(*a,&b) }
>    end
>  end
>
> Advantage is that there is a single mechanism that uniformly works for _a=
ll_
> classes not just collections.  And, the mechanism is made explicit while =
not
> requiring too much manual intervention or additional typing. For all case=
s
> where the logic requires other locking schemes explicit locking needs to =
be
> employed anyway.
However there is too big a prise to pay, ok we could get rid of the
metaprogramming and just follow the idea you have presented, but
exclusive read access just will make the wrapped collection unusable
for any heavy weight parallel read access.
>
> Kind regards
>
>        robert
>
>
> PS: I just recognize we should probably move this discussion over to
> ruby-core...
Hmm  maybe
Anyway thanks for your time.

Robert
--=20
Il computer non =E8 una macchina intelligente che aiuta le persone
stupide, anzi, =E8 una macchina stupida che funziona solo nelle mani
delle persone intelligenti.
Computers are not smart to help stupid people, rather they are stupid
and will work only if taken care of by smart people.

Umberto Eco

In This Thread