|
Boost Users : |
Subject: Re: [Boost-users] [wave] assertion failed - multithread issue?
From: Sohail Somani (sohail_at_[hidden])
Date: 2009-03-09 18:36:52
Ein Held wrote:
> {
> std::ifstream instream(file_name);
> file =
> std::string(std::istreambuf_iterator<char>(instream.rdbuf()),std::istreambuf_iterator<char>());
> instream.close();
>
> for(int i=0;i<10;++i)
> {
> boost::thread t(test);
> }
>
> test();
> }
I assume you are using the latest Boost.
At a quick glance, it seems that it is possible for one of your 10
threads to still be running when the main program exits. I wonder if
this is the problem.
You might want to use thread_group and join_all to make sure.
Specifically:
for(...)
{
// destructor calls detach() -> thread keeps running
boost::thread t(test);
}
test(); // possible to finish before one of the above threads
Try changing to:
boost::thread_group group;
for(...)
{
group.add_thread(new boost::thread(test));
}
test();
group.join_all();
Good luck!
-- Sohail Somani http://uint32t.blogspot.com
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net