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;
}