Boost logo

Boost Users :

Subject: Re: [Boost-users] How to terminate a specific thread among other threads
From: Master (master.huricane_at_[hidden])
Date: 2012-04-15 09:31:22


> Why is it spawned each time?
> Thread is a "thread of execution". When you launch it in c/c++, it
> starts in the beginning of some function and ends when the function
> ends. So if you return from the thread function, this particular
> thread exits.
>
thanks , thats great .:) i though the only way to terminate a thread is to
use interrupts and an un-handled exception generated by sleep() :)
 by the way it is the source code whith my latest knowledge . it now
compiles fine thanks to you guys , kills a thread , and then specifically i
can manage each thread i want . but there is a problem , the first thread
doesnt print anything on the cosole ! while the others do! i even used
mutex , but seems its not the case . any idea?

//in the name of GOD
> //Seyyed Hossein Hasan Pour
> //Learning Boost Threading
> //How to selectively specify a thread and terminate it
>
> #include <boost/signal.hpp>
> #include <iostream>
> #include <boost/thread.hpp>
> using namespace std;
>
> boost::thread threadarray[3];
> boost::mutex mutex;
> int t(int x)
> {
> if(threadarray[0].get_id() == boost::this_thread::get_id())
> {
> boost::lock_guard<boost::mutex> locker(mutex);
> std::cout<<"thread 1";
> }
> else if(threadarray[1].get_id() == boost::this_thread::get_id())
> {
> return 0;
> }
> else if(threadarray[2].get_id() == boost::this_thread::get_id())
> {
> boost::lock_guard<boost::mutex> locker(mutex);
> std::cout<<"thread 3";
> }
> return 0;
> }
>
> int main()
> {
> boost::thread t1(t,5), t2(t,6),t3(t,7);
>
> threadarray[0] = t1.move();
> threadarray[1] = t2.move();
> threadarray[2] = t3.move();
>
> for(int i = 0; i <3;i++)
> {
> threadarray[i].join();
> }
> system("pause");
> return 0;
> }
>



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