[#358392] Increase significant digits in Float — Jason Lillywhite <jason.lillywhite@...>

If I want to increase my significant digits beyond 15 in a result of a

12 messages 2010/03/02

[#358431] A gem for handling temporary file(s)? — Albert Schlef <albertschlef@...>

I'm writing a program that needs to generate two or three temporary

21 messages 2010/03/03
[#358432] Re: A gem for handling temporary file(s)? — Paul Harrington <xenogenesis@...> 2010/03/03

Albert Schlef wrote:

[#358443] Re: A gem for handling temporary file(s)? — Albert Schlef <albertschlef@...> 2010/03/03

Paul Harrington wrote:

[#358486] Re: A gem for handling temporary file(s)? — Caleb Clausen <vikkous@...> 2010/03/03

On 3/2/10, Albert Schlef <albertschlef@gmail.com> wrote:

[#358485] Test::Unit::Omission - Unable to omit tests — Champak Ch <champaka@...>

I am trying to omit some tests while using the test unit framework. My

12 messages 2010/03/03

[#358551] Shared hosting recommendation? — Rafael Vega <email.rafa@...>

Hello!

10 messages 2010/03/04

[#358559] Limit number of concurrent running threads in pool — Joe Martin <jm202@...>

Hi

14 messages 2010/03/04

[#358576] A good portable text editor/IDE for Ruby? — Reiichi Tyrael <xxreiichixx@...>

I am searching for a good portable text editor or IDE for Ruby to use on

19 messages 2010/03/05

[#358586] Base-64 encoding--Just for the fun of it! — "Aaron D. Gifford" <astounding@...>

Yes, there's always:

10 messages 2010/03/05

[#358611] On what of these books is better to start to study Ruby? — Vlad Gerasimov <refermaker@...>

I have 3 books:

12 messages 2010/03/05

[#358634] Conditional keys in hash - out of the box? — "Sven S." <svoop@...>

Hi

12 messages 2010/03/05

[#358661] Why no TextMate for Linux? — thunk <gmkoller@...>

I spent some happy development time in "VisualAge" for Smalltalk +

42 messages 2010/03/06

[#358702] win32console 1.3.0.beta2 Released — Luis Lavena <luislavena@...>

win32console version 1.3.0.beta2 has been released!

17 messages 2010/03/07

[#358757] Shortest code — Prasanth Ravi <dare.take@...>

hi i'm a newbie in ruby and was test out some interesting problems in

18 messages 2010/03/08

[#358885] reading an UTF-8 encoded file — unbewusst.sein@... (Une B騅ue)

13 messages 2010/03/10

[#359008] Dir.glob problem — David Vlad <cluny_gisslaren@...>

In the program Im making I need to read some wma files into a variable

21 messages 2010/03/12

[#359031] Newbie Help : Object — Jerome David Sallinger <imran.nazir@...>

Hello,

14 messages 2010/03/13

[#359090] Overriding new? — Andrea Dallera <andrea@...>

Hi everybody,

19 messages 2010/03/15
[#359091] Re: Overriding new? — Chuck Remes <cremes.devlist@...> 2010/03/15

[#359093] Re: Overriding new? — Andrea Dallera <andrea@...> 2010/03/15

Hei Chuck,

[#359130] Recommended way to install Rubygems — Leslie Viljoen <leslieviljoen@...>

Hi!

64 messages 2010/03/16
[#359175] Re: Recommended way to install Rubygems — Eric Hodel <drbrain@...7.net> 2010/03/17

On Mar 16, 2010, at 03:22, Leslie Viljoen wrote:

[#359176] Re: Recommended way to install Rubygems — Lucas Nussbaum <lucas@...> 2010/03/17

(Please Cc me when replying, I don't follow ruby-talk@ closely enough to

[#359183] Re: Recommended way to install Rubygems — Nick Brown <nick@...> 2010/03/18

Lucas: Thanks for maintaining the Ruby package in Ubuntu!

[#359187] Re: Recommended way to install Rubygems — Lucas Nussbaum <lucas@...> 2010/03/18

On 18/03/10 at 13:36 +0900, Nick Brown wrote:

[#359200] Re: Recommended way to install Rubygems — Nick Brown <nick@...> 2010/03/18

Lucas Nussbaum wrote:

[#359204] Re: Recommended way to install Rubygems — Lucas Nussbaum <lucas@...> 2010/03/18

On 18/03/10 at 23:05 +0900, Nick Brown wrote:

[#359210] Re: Recommended way to install Rubygems — Rick DeNatale <rick.denatale@...> 2010/03/18

On Thu, Mar 18, 2010 at 10:21 AM, Lucas Nussbaum

[#359215] Re: Recommended way to install Rubygems — Lucas Nussbaum <lucas@...> 2010/03/18

On 18/03/10 at 23:45 +0900, Rick DeNatale wrote:

[#359230] Re: Recommended way to install Rubygems — Aldric Giacomoni <aldric@...> 2010/03/18

Lucas Nussbaum wrote:

[#359233] Re: Recommended way to install Rubygems — Lucas Nussbaum <lucas@...> 2010/03/18

On 19/03/10 at 02:49 +0900, Aldric Giacomoni wrote:

[#359171] Replace Text at Specific Positions Across Files — Shiny Hydra <slotriof@...>

Hello everyone,

12 messages 2010/03/17
[#359192] Re: Replace Text at Specific Positions Across Files — Robert Klemme <shortcutter@...> 2010/03/18

2010/3/17 Shiny Hydra <slotriof@guerrillamailblock.com>:

[#359198] Re: Replace Text at Specific Positions Across Files — Shiny Hydra <slotriof@...> 2010/03/18

> So your file has fixed width records? This is important to know,

[#359255] Grouping elements of an array — Steve Wilhelm <steve@...831.com>

I have an array of records that contain timestamps at random intervals.

24 messages 2010/03/18

[#359354] Living with a Swarm of Boids - A report from the front — thunk <gmkoller@...>

Hi,

15 messages 2010/03/20

[#359388] A plugin system using extend — Jean-denis Vauguet <jd@...>

Hi.

17 messages 2010/03/21
[#359394] Re: A plugin system using extend — Josh Cheek <josh.cheek@...> 2010/03/21

On Sat, Mar 20, 2010 at 9:46 PM, Jean-denis Vauguet <jd@vauguet.fr> wrote:

[#359398] Re: A plugin system using extend — Jean-denis Vauguet <jd@...> 2010/03/21

Thank you Josh. Actually I've already tested what you wrote and that's

[#359402] Re: A plugin system using extend — Jean-denis Vauguet <jd@...> 2010/03/21

Another idea I had is the following:

[#359410] Re: A plugin system using extend — James Edward Gray II <james@...> 2010/03/21

On Mar 21, 2010, at 2:13 AM, Jean-denis Vauguet wrote:

[#359420] Reading contents of all files from a Directory — Hawksury Gear <blackhawk_932@...>

Hello,

23 messages 2010/03/21
[#359422] Re: Reading contents of all files from a Directory — Jonathan Nielsen <jonathan@...> 2010/03/21

> I am trying to "Read Content" of all the files from a Directory. So far

[#359423] Re: Reading contents of all files from a Directory — Jonathan Nielsen <jonathan@...> 2010/03/21

> arr =3D Dir.open("K:/test").entries

[#359464] Re: Reading contents of all files from a Directory — Robert Klemme <shortcutter@...> 2010/03/22

2010/3/21 Jonathan Nielsen <jonathan@jmnet.us>:

[#360368] Re: Reading contents of all files from a Directory — Hawksury Gear <blackhawk_932@...> 2010/04/04

> If it is only for output purposes, we can actually do it in one line:

[#360370] Re: Reading contents of all files from a Directory — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/04/04

On Sun, Apr 4, 2010 at 3:06 PM, Hawksury Gear <blackhawk_932@hotmail.com> w=

[#360373] Re: Reading contents of all files from a Directory — Hawksury Gear <blackhawk_932@...> 2010/04/04

Thanks for replying ,when I am doing

[#360374] Re: Reading contents of all files from a Directory — Hassan Schroeder <hassan.schroeder@...> 2010/04/04

On Sun, Apr 4, 2010 at 8:16 AM, Hawksury Gear <blackhawk_932@hotmail.com> wrote:

[#360375] Re: Reading contents of all files from a Directory — Hawksury Gear <blackhawk_932@...> 2010/04/04

Hassan Schroeder wrote:

[#359662] index of string from beginning of line vs beginning of file — "Jesse B." <jessebos@...>

I am trying to write a basic script to implement "silent comments"

10 messages 2010/03/25
[#359663] Re: index of string from beginning of line vs beginning of file — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/03/25

On Thu, Mar 25, 2010 at 5:19 PM, Jesse B. <jessebos@aol.com> wrote:

[#359684] Ruby Summer of Code 2010 — Jeremy Kemper <jeremy@...>

Fellow Rubyists, I'm proud to announce the first annual Ruby Summer of Code.

20 messages 2010/03/26
[#359985] Re: [ANN] Ruby Summer of Code 2010 — Roger Pack <rogerpack2005@...> 2010/03/30

Jeremy Kemper wrote:

[#359697] Ruby and user documentation — Michel Demazure <michel@...>

Hi all,

20 messages 2010/03/26

[#359749] Boid writeup idea — thunk <gmkoller@...>

30 messages 2010/03/26

[#359909] return number of spaces at the beginning of a line — "Jesse B." <jessebos@...>

How would I find the number of spaces at the beginning of a line before

28 messages 2010/03/30
[#359925] Re: return number of spaces at the beginning of a line — Josh Cheek <josh.cheek@...> 2010/03/30

On Mon, Mar 29, 2010 at 8:41 PM, Jesse B. <jessebos@aol.com> wrote:

[#359941] Re: return number of spaces at the beginning of a line — Robert Klemme <shortcutter@...> 2010/03/30

2010/3/30 Josh Cheek <josh.cheek@gmail.com>:

[#359945] Re: return number of spaces at the beginning of a line — "Jesse B." <jessebos@...> 2010/03/30

This second post with the "spaces only" fix seems to meet all the needs

[#359961] Re: return number of spaces at the beginning of a line — Robert Klemme <shortcutter@...> 2010/03/30

2010/3/30 Jesse B. <jessebos@aol.com>:

[#360011] RubyDictionary - First Try — Max Schmidt <max.schmidt.privat@...>

Hello folks,

12 messages 2010/03/30
[#360035] Re: RubyDictionary - First Try — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/03/31

On Wed, Mar 31, 2010 at 12:40 AM, Max Schmidt

[#360033] Playing Games with "Ruids" — thunk <gmkoller@...>

46 messages 2010/03/31

Re: Thread pool issue

From: Robert Klemme <shortcutter@...>
Date: 2010-03-18 12:39:14 UTC
List: ruby-talk #359195
2010/3/18 Sriram Varahan <sriram.varahan@gmail.com>:
> Hello,
>
>
> =A0 =A0 I was just trying out the thread pool code form Ruby Cookbook.
>
> I created a script to test it out. The complete code is as follows:
> -------------------------------------------------------------------------=
----
> require 'thread'
>
> class ThreadPool
> =A0def initialize(max_size)
> =A0 =A0@pool =A0 =A0 =A0 =3D []
> =A0 =A0@max_size =A0 =3D max_size
> =A0 =A0@pool_mutex =3D Mutex.new
> =A0 =A0@pool_cv =A0 =A0=3D ConditionVariable.new
> =A0end
>
> =A0def dispatch(*args)
> =A0 =A0Thread.new do
> =A0 =A0 =A0# Wait for space in the pool.
> =A0 =A0 =A0@pool_mutex.synchronize do
> =A0 =A0 =A0 =A0while @pool.size >=3D @max_size
> =A0 =A0 =A0 =A0 =A0puts "Pool is full; waiting to run #{args.join(',')}=
=85\n"
> =A0 =A0 =A0 =A0 =A0# Sleep until some other thread calls @pool_cv.signal.
> =A0 =A0 =A0 =A0 =A0@pool_cv.wait(@pool_mutex)
> =A0 =A0 =A0 =A0end
> =A0 =A0 =A0end
> =A0 =A0 =A0@pool << Thread.current
> =A0 =A0 =A0begin
> =A0 =A0 =A0 =A0yield(*args)
> =A0 =A0 =A0rescue =3D> e
> =A0 =A0 =A0 =A0exception(self, e, *args)
> =A0 =A0 =A0ensure
> =A0 =A0 =A0 =A0@pool_mutex.synchronize do
> =A0 =A0 =A0 =A0 =A0# Remove the thread from the pool.
> =A0 =A0 =A0 =A0 =A0@pool.delete(Thread.current)
> =A0 =A0 =A0 =A0 =A0# Signal the next waiting thread that there's a space =
in the
> pool.
> =A0 =A0 =A0 =A0 =A0@pool_cv.signal
> =A0 =A0 =A0 =A0end
> =A0 =A0 =A0end
> =A0 =A0end
> =A0end
>
> =A0def shutdown
> =A0 =A0@pool_mutex.synchronize { @pool_cv.wait(@pool_mutex) until
> @pool.empty? }
> =A0end
>
> =A0def exception(thread, exception, *original_args)
> =A0 =A0# Subclass this method to handle an exception within a thread.
> =A0 =A0puts "Exception in thread #{thread}: #{exception}"
> =A0end
> end
>
> @work =3D []
> def no_work_only_sleep
> =A0sleep(2)
> =A0@work << "Finished"
> end
>
> pool =3D ThreadPool.new(3)
>
> 10.times do |i|
> =A0pool.dispatch(i) do
> =A0 =A0puts "Job #{i} started"
> =A0 =A0no_work_only_sleep
> =A0end
> end
>
> pool.shutdown
> puts @work.length
>
> -------------------------------------------------------------------------
> What I am doing here is creating 10 jobs and within a job calling a
> method.
> Inside the method I am inserting a string "Finished" to an array @work.
> So for 10 jobs this array should contain 10 such strings.
>
> The issue I have here is : For a thread pool of size 3 it gives an
> output of 9 where it should have been 10.
>
> For any other thread pool value it gives 10 as required.
>
> Any reason as to why this is happening?

Two things stand out:

1. as far as I can see you are not properly synchronizing access to @work.

2. IMHO the check of the current thread pool size should be done in
the calling thread in order to block it - not in the newly created
background thread.

Issue 2 is a bit tricky to understand but I believe you have created a
situation where background threads are started and waiting for room in
the pool to become available but the shutdown may get in the way so
you might terminate the pool although there are still threads waiting
to start their work.

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread

Prev Next