本文整理汇总了C++中boost::thread::timed_join方法的典型用法代码示例。如果您正苦于以下问题:C++ thread::timed_join方法的具体用法?C++ thread::timed_join怎么用?C++ thread::timed_join使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类boost::thread
的用法示例。
在下文中一共展示了thread::timed_join方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: beginLawnmowerThread
/*
* beginLawnmowerThread
* Starts the lawnmower code.
*/
bool beginLawnmowerThread() {
if ( thread_1.timed_join(boost::posix_time::milliseconds(10)) ) {
cout << "\033[36m[THRIFT]\033[0m Beginning lawnmower thread." << endl;
if (waypoints_list.size() != 2) {
cout << "\033[31m[THRIFT]\033[0m Cannot start lawnmower without boundaries!" << endl;
return false;
}
Pos corner1;
Pos corner2;
corner1.lat = waypoints_list.front().lat;
corner1.lon = waypoints_list.front().lon;
corner2.lat = waypoints_list.back().lat;
corner2.lon = waypoints_list.back().lon;
usingWindows = false;
exitProgram = false;
userState = -1;
thread_1 = boost::thread(run_lawnmower, boost::ref(fb), boost::ref(gps), boost::ref(imu), boost::ref(buzzer), corner1, corner2);
return true;
} else {
cout << "\033[31m[THRIFT]\033[0m Cannot start lawnmower, copter is flying." << endl;
return false;
}
}
示例2: beginUserTrackingThread
/*
* beginUserTrackingThread
* Starts the user tracking thread.
*/
bool beginUserTrackingThread() {
if ( thread_1.timed_join(boost::posix_time::milliseconds(10)) ) {
cout << "\033[36m[THRIFT]\033[0m Beginning user tracking thread." << endl;
exitProgram = false;
userState = -1;
thread_1 = boost::thread(userTracking, boost::ref(fb), boost::ref(gps), boost::ref(imu), boost::ref(buzzer), boost::ref(logs), boost::ref(user_position));
return true;
} else {
cout << "\033[31m[THRIFT]\033[0m Cannot start user tracking, copter is flying." << endl;
return false;
}
}
示例3: beginWaypointsThread
/*
* beginWaypointsThread
* Starts the waypoints code looping.
*/
bool beginWaypointsThread() {
if ( thread_1.timed_join(boost::posix_time::milliseconds(10)) ) {
cout << "\033[36m[THRIFT]\033[0m Beginning waypoints thread." << endl;
exitProgram = false;
userState = -1;
thread_1 = boost::thread(waypointsFlightLoop, boost::ref(fb), boost::ref(gps), boost::ref(imu), boost::ref(buzzer), boost::ref(logs), waypoints_list);
return true;
} else {
cout << "\033[31m[THRIFT]\033[0m Cannot start waypoints, copter is flying." << endl;
return false;
}
}
示例4: catch
void nuke_ms::clientnode::catchThread(boost::thread& thread, unsigned threadwait_ms)
{
// a thread id that compares equal to "not-a-thread"
boost::thread::id not_a_thread;
try {
// give the thread a few seconds time to join
thread.timed_join(boost::posix_time::millisec(threadwait_ms));
}
catch(...)
{}
// if the thread finished, return. otherwise try to kill the thread
if (thread.get_id() == not_a_thread)
return;
thread.interrupt();
// if it is still running, let it go
if (thread.get_id() == not_a_thread)
return;
thread.detach();
}
示例5: join
void join(unsigned val){///Join thread after specified time in seconds
m_Thread.timed_join(( boost::posix_time::time_duration(0,0,val,int(boost::posix_time::time_duration::ticks_per_second() / 10))));
UpdateStats(new string("Thread has been doing something for: "+ Conv::TimeToString(Time::TimeDiff(*blt_ldt_Start))));
}