A simple program is: I would like to get the thread ID of both of the threads using this gettid function. I do not want to do the sysCall directly. I want to use this function.
#include <iostream> #include <boost/thread/thread.hpp> #include <boost/date_time/date.hpp> #include <unistd.h> #include <sys/types.h> using namespace boost; using namespace std; boost::thread thread_obj; boost::thread thread_obj1; void func(void) { char x; cout << "enter y to interrupt" << endl; cin >> x; pid_t tid = gettid(); cout << "tid:" << tid << endl; if (x == 'y') { cout << "x = 'y'" << endl; cout << "thread interrupt" << endl; } } void real_main() { cout << "real main thread" << endl; pid_t tid = gettid(); cout << "tid:" << tid << endl; boost::system_time const timeout = boost::get_system_time() + boost::posix_time::seconds(3); try { boost::this_thread::sleep(timeout); } catch (boost::thread_interrupted &) { cout << "thread interrupted" << endl; } } int main() { thread_obj1 = boost::thread(&func); thread_obj = boost::thread(&real_main); thread_obj.join(); }
It gives Error on compilation; The use of gettid() has been done according to the man page:
$g++ -std=c++11 -o Intrpt Interrupt.cpp -lboost_system -lboost_thread Interrupt.cpp: In function ‘void func()’: Interrupt.cpp:17:25: error: ‘gettid’ was not declared in this scope pid_t tid = gettid();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With