|
Boost : |
Subject: Re: [boost] [thread] throw during new boost::thread() ??
From: David M. Cotter (me_at_[hidden])
Date: 2010-08-21 19:21:06
>> these threads live a very short time and only maybe ten max are
>> alive at any one time.
>>
>> for example if i'm iterating over every song in my music library and
>> doing some quick process, after about 5500 songs, the program stops
>> working.
>>
>> i'm exiting the threads normally, so housekeeping is performed (tho
>> it would be performed anyway, right?)
>>
>> i checked and when it crashes there are indeed only about five
>> threads running. so SOME resource is not getting released, it's not
>> my resource, it's something to do with boost::threads.
>
> Well, if things are *really* borked when it crashes, you might not be
> getting an accurate count of the running threads, or perhaps they've
> all exited by the time you actually check. No matter how quick the
> task, without something to keep the number of actual simultaneous
> threads under control, you *are* very likely launching all 5500 of
> them at once in a way thatat bestwill never perform well.
well, things aren't borked, i can assure you that no more than ten are running at once
during my test, i increment a "live" count and a "done" count, and they never differ by more than say five. if they do, i assert.
so it's simply not possible that more than five are live at once.
put another way, i have a live thread count that in inc's when a thread is created and dec's when a thread is destroyed. and that count never goes over five.
performance has never been an issue. in my actual app i'm not actually just performing a tight loop spawning threads. there's a lot happening between spawnings and threads close at the same rate they are opened. again i've never had more than about five open at once.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk