首先慶祝下CSDN帳號找回,呵呵1年多沒用了。現在潛心研究一些技術方面的東西,大家有興趣可以多交流交流。
將函數的運行調整為非阻塞模式大家可能平時不怎麼用到,但是當大家寫外掛程式化程式時,外掛程式是別人寫的,為了不影響你的整套流程,可以使用這個方法,當函數已耗用時間超過你設定的時間時,就認為函數是執行失敗。
好了,直接上代碼。
#include <iostream>#include "boost/bind.hpp"#include "boost/thread.hpp"using namespace std;void Test(){boost::this_thread::sleep(boost::posix_time::millisec(2000));}template<typename f>bool RunWithOutTimeOut(f fun, boost::int32_t time_tick, boost::int32_t timeout_times){boost::thread test_thread_(fun);boost::int32_t i = 0;while (1){if (!test_thread_.timed_join(boost::posix_time::millisec(time_tick))){if (i ++ >= timeout_times){return false;}continue;}else{return true;}}return true;}int main(){bool bRet = RunWithOutTimeOut(boost::bind(&Test), 20, 10);if (bRet){cout << "success" << endl;}else{cout << "faild" <<endl;}int input_data = 0;cin >> input_data;return 1;}
OK了,大家應該都懂,我就不多說了。