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 10:24:22


Thanks for your meticulous observation :)
so instead of just retyping lockguard inside all of if statements , one at
the very beginning of the function in question would suffice right ? :)
did your suggestions and the code is compiled just fine , and i get the
expected behaviors :)
this is the code i came up with so far :

//in the name of GOD
> //Seyyed Hossein Hasan Pour
> //Learning Boost Threading- How to end/terminate a thread
> //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 someArg)
> {
> boost::lock_guard<boost::mutex> locker(mutex);
> if(threadarray[0].get_id() == boost::this_thread::get_id())
> {
> std::cout<<boost::this_thread::get_id()<<"\t is thread 1 with arg
> "<<someArg<<std::endl;
> }
> else if(threadarray[1].get_id() == boost::this_thread::get_id())
> {
> //Terminating the thread
> return 0;
> }
> else if(threadarray[2].get_id() == boost::this_thread::get_id())
> {
> std::cout<<boost::this_thread::get_id()<<"\t is thread 3 with arg
> "<<someArg<<std::endl;
> }
> return 0;
> }
>
> int main()
> {
>
> threadarray[0] = boost::thread(t,5);
> threadarray[1] = boost::thread(t,6);
> threadarray[2] = boost::thread(t,7);
>
> 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