由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++11痛并快乐着
相关主题
C#转C++可行否?请教一个boost::bind的问题
C++设计疑问python soap库问题
我是否需要Move(C++11)?这里的人用BOOST都是用来做什么?
C++ questionc++ 怎么让一段程序每10秒钟run一次?
C++ ASIO异步一问C++ 中 myobject * a =new myobject[n] 的问题
求建议:C++的TCP/IP编程库谁能说说Perl, Python, Tcl各自的优缺点?主要应用场合?
有人熟悉c++ Qt吗?question about const reference
boost vs C++11What are possible reasons for the program to crash before r
相关话题的讨论汇总
话题: std话题: server话题: c++话题: boost话题: asyncstop
进入Programming版参与讨论
1 (共1页)
b***i
发帖数: 3043
1
最近用asio, 好不容易把boost一个tcp server的例子改成了不用boost,只用C++11。
其中的改动有
boost::bind -> std::bind, _1 -> std::placeholders::_1, boost::asio::xxx ->
asio::xxx,
boost::system::error_code -> asio::error_code, high_resolution_timer.
expires_at(std::chrono::high_resolution_clock::time_point::max());
主要问题是网上大部分的例子都是用boost,而编译器去年才全部支持C++11。改动的地
方也不知道对不对,只知道语法对了。
最后,生成一个例子程序来测试能不能把server停了,退出程序,这个退出的功能需要
用一个线程,3秒后呼叫io_service.stop(); 所以线程如下
void asyncStop(Server& server) {
using namespace std::literals;
std::this_thread::sleep_for(2s);
std::cout << "before" << std::endl;
server.quit();
std::cout << "after"<< std::endl;
}
然后main里面
Server s(io_service, listen_endpoint);
std::thread t1(&asyncStop, s);告诉我错误在tuple第75行。这哪找去,最后发现要
这样写
std::thread t1(&asyncStop, std::ref(s));
学了20年C++,现在终于成了初学者。用的编译器是VS2015。关于最后一个错误,它能
否告诉我错在我的std::thread t1(&asyncStop, s);?
l*********s
发帖数: 5409
2
it seems that the ctor of std::thread is invoking copy ctor of the argument
and passing by values, and probably your Server object is a singleton and
not copy-able.
I suspect vs2015 has an option for verbose error messages, in gcc it is
going to be a tall stack of errors and you can trace back to your source
code.
c*******u
发帖数: 1269
3
网上这个讨论挺多的,主要是template 不知道怎么处理&, tuple需要输入为value。加
ref就是实为ref的value。

>

【在 b***i 的大作中提到】
: 最近用asio, 好不容易把boost一个tcp server的例子改成了不用boost,只用C++11。
: 其中的改动有
: boost::bind -> std::bind, _1 -> std::placeholders::_1, boost::asio::xxx ->
: asio::xxx,
: boost::system::error_code -> asio::error_code, high_resolution_timer.
: expires_at(std::chrono::high_resolution_clock::time_point::max());
: 主要问题是网上大部分的例子都是用boost,而编译器去年才全部支持C++11。改动的地
: 方也不知道对不对,只知道语法对了。
: 最后,生成一个例子程序来测试能不能把server停了,退出程序,这个退出的功能需要
: 用一个线程,3秒后呼叫io_service.stop(); 所以线程如下

1 (共1页)
进入Programming版参与讨论
相关主题
What are possible reasons for the program to crash before rC++ ASIO异步一问
C++ 关于 Named Ctor Idom 的小问题求建议:C++的TCP/IP编程库
一道Microsoft的面试题有人熟悉c++ Qt吗?
one question about operator deleteboost vs C++11
C#转C++可行否?请教一个boost::bind的问题
C++设计疑问python soap库问题
我是否需要Move(C++11)?这里的人用BOOST都是用来做什么?
C++ questionc++ 怎么让一段程序每10秒钟run一次?
相关话题的讨论汇总
话题: std话题: server话题: c++话题: boost话题: asyncstop