|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
时间相关:延迟5秒
1.同步
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main() {
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
std::cout << "hello, world!" << std::endl;
return 0;
}
2.异步
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
void callback(const boost::system::error_code&) {
std::cout << "Hello, world!" << std::endl;
}
void callback2(const boost::system::error_code&) {
std::cout << "second call but first run" << std::endl;
}
int main() {
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.async_wait(callback);//注册事件,当过了5秒钟后来调用.
boost::asio::deadline_timer t(io, boost::posix_time::seconds(2));
t.async_wait(callback2);//注册事件,当过了2秒钟后来调用.
//虽然是后注册的事件,但是会被先调用,因为先满足条件的先调用,跟注册的顺序无关
std::cout << "start run\n";
io.run();//callback是在run里面执行的
std::cout << "finish run\n";
//什么时候会退出呢,当io.stop的时候,或者当消息池没有注册事件了,也就是事件都处理完了。
return 0;
}
新的timer
#include <boost/asio/steady_timer.hpp>//要单独引入,没有包含在asio这个头文件里,因为怕引
入多余的内容,所以把steady_timer.hpp从asio.hpp中分割开了
int main() {
boost::asio::io_service io;
boost::asio::steady_timer st(io);
同步:
st.expires_from_now(std::chrono::seconds(5));//从这一刻开始调用起,chrono时间库更精确
st.wait();//柱塞事;
异步:
?st.expires_from_now(std::chrono::seconds(5));
?t.async_wait(callback2);
std::cout << "hello world\n";
return 0;
}
自定义的time类作用:
1.可配置的,调用一次还是多次,还是无线调用
2.timer类可以被取消掉,比如跑10次,跑到第五次就可以取消掉
3.可以暂停几秒钟,比如:一局游戏,每个玩家只有15秒钟,但是突然有个玩家要发大招,可能要2秒
中,这个时候就希望time类可以暂停2秒钟,把这个放大招的时间也考虑进去
这些功能都可以用boost/asio里面的time类来实现
|
评分
-
查看全部评分
|