Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ gettid() was not declared in this scope

Tags:

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();