boost 学习总结
来源:互联网 发布:ubuntu 14.04 配置ip 编辑:程序博客网 时间:2024/06/07 04:11
1 boost::function
可以理解为函数指针,函数式编程风格。可以指向函数,仿函数对象,成员函数等。例如
void f(int x, int y){ cout<<"f func :---------->x + y ="<<x + y <<endl;}boost::function<void(int, int)> funcF = boost::bind(f, _1,_2);funcF(20,30);
2 boost::thread
创建boost线程, 包含函数,仿函数对象,成员函数等。
class myThread{ public: void invoke() { std::cout << "In myThread::invoke..." << std::endl; }};myThread th;boost::thread thread_member_call(boost::bind(&myThread::invoke,&th));
常用接口: get_id(), join(),joinable(),interrupt(),detach()等
3 boost::bind
4 boost::asio::deadline_timer && boost::asio
class TimerTask;DECLARE_SMART_PTR(TimerTask);class RealTask :private boost::noncopyable {public:RealTask(const TimerTask_ptr task); void timerCallback(const boost::system::error_code& err);private:TimerTask_ptr m_task;};class TimerTask:public std::enable_shared_from_this<TimerTask>,public BaseTask {public:friend class RealTask; TimerTask(const std::string& name): BaseTask(name){} virtual ~TimerTask(); virtual void handleTask() = 0; bool run(RealTask* realTask); void schedule(boost::asio::io_service* io, long delay, long interval); void cancel(); private: std::shared_ptr<boost::asio::deadline_timer> m_impTimer; long m_interval; boost::asio::io_service* m_io; boost::recursive_mutex m_tsMutex;};//========================================void RealTask::timerCallback(const boost::system::error_code& err) {if (err) {LOG_DEBUG("Timer Task is canceled.");delete this;return;}bool should_be_del = true;if (m_task) {should_be_del = m_task->run(this);}if (should_be_del) {delete this;}return;}void TimerTask::schedule(boost::asio::io_service* io, long delay, long interval) {boost::lock_guard<boost::recursive_mutex> lock(m_tsMutex); m_interval = interval; m_io = io; RealTask* realTask = new RealTask(shared_from_this()); m_impTimer.reset(new boost::asio::deadline_timer(*io, boost::posix_time::milliseconds(delay))); m_impTimer->async_wait(boost::bind(&RealTask::timerCallback, realTask, boost::asio::placeholders::error)); LOG_DEBUG("Timer Task: " << getName() << " is scheduled, interval:" << delay / 1000 << "s");}bool TimerTask::run(RealTask* realTask) {bool should_be_del = true; LOG_DEBUG("Timer Task: " << getName() << " is expired."); {boost::lock_guard<boost::recursive_mutex> lock(m_tsMutex);if(!m_impTimer){LOG_ERROR("shared_ptr is NULL [m_impTimer]");return should_be_del;}//For periodic timerif (m_interval != 0) {m_impTimer.reset(new boost::asio::deadline_timer(*m_io, boost::posix_time::milliseconds(m_interval)));m_impTimer->async_wait(boost::bind(&RealTask::timerCallback, realTask, boost::asio::placeholders::error));LOG_DEBUG("Timer Task: " << getName() << " is scheduled, interval:" << m_interval / 1000 << "s");should_be_del = false;} } handleTask(); return should_be_del;};void TimerTask::cancel() {boost::lock_guard<boost::recursive_mutex> lock(m_tsMutex); if(!m_impTimer) { LOG_ERROR("shared_ptr is NULL [m_impTimer]"); return; } m_impTimer->cancel();}
0 0
- boost库学习总结
- boost 学习总结
- boost库学习总结
- boost库学习总结
- boost使用学习总结
- boost库学习总结
- boost库学习总结
- Boost.Asio学习之总结
- boost asio 学习总结之 io_service
- Boost Test学习总结(C++)
- Boost Test学习总结(C++)
- 【Boost】Boost总结汇总
- 【Boost】Boost总结汇总
- 【Boost】Boost总结汇总
- boost 总结
- [Boost系列] Boost学习
- 【BOOST学习】BOOST安装
- BOOST学习
- form表单中get与post的区别
- ios7新特性nsurlsession初探
- __v7_setup
- Android APP 登陆模块
- 使用Provider与Resolver读取系统联系人并插入联系人
- boost 学习总结
- 豪华版飞机大战系列(三)
- 【最短路】 codeforces 449B Jzzhu and Cities
- OCP 1Z0 053 179
- android-awesome-resource
- UIScrollView paging
- wxwidgets中分解GIF动画图片并显示播放
- leedcode做题总结,题目Reverse Integer----- 2011/12/25
- objective-c基础教程——学习小结