Hi,
 
In both functions you bind a method of a local object. The local object might die before the thread has a chance to execute that method!
So either you must wait until the thread ends:

void test_boost_thread_1(){

    M p(88);
    boost::thread pthd(boost::bind(&M::m_show, &p));
    pthd.join();

}

or you must bind your object by value - then the copy of the original object will be executed.




Date: Tue, 20 May 2008 21:05:17 +0800
From: hexiay@gmail.com
To: boost-users@lists.boost.org
Subject: [Boost-users] Could two boost threads with the same name run at the same time?

Hi,  all,
My code looks like this:

=============================================================

//     M is a class, m_show() is one of its methods.

void test_boost_thread_1(){

    M p(88);
    boost::thread pthd(boost::bind(&M::m_show, &p));

}


void test_boost_thread_2(){  

    M p(99);
    boost::thread pthd(boost::bind(&M::m_show, &p));

}

===============================================================

"test_boost_thread_1()"  and  "test_boost_thread_2()"  are running at the same time ,but I find that the output is wrong.
If I changed the thread name  "pthd"  in "test_boost_thread_()" to other name , not  "pthd" , it looks ok.  why ? ........

Now , many other threads want to run  " test_boost_thread_1() "  at the "same"  time, How could I make it ok ?

Thanks for your time.



Best Regards.




Discover the new Windows Vista Learn more!