我在enable_shared_from_this
阅读Boost.Asio示例时跑了过来,在阅读完文档之后,我仍然因为如何正确使用它而迷失了方向.有人可以给我一个例子和/或说明何时使用这个课程是有道理的.
作为Boost.Asio的初学者,我很困惑io_service::run()
.如果有人能在这个方法阻止/解除阻止时向我解释,我将不胜感激.文件指出:
该
run()
函数将阻塞,直到所有工作完成,并且不再需要调度处理程序,或者直到io_service
停止处理.多个线程可以调用该
run()
函数来设置一个线程池,io_service
可以从中执行处理程序.在池中等待的所有线程都是等效的,并且io_service
可以选择其中任何一个来调用处理程序.
run()
函数的正常退出意味着io_service
对象已停止(stopped()
函数返回true).后续调用run()
,run_one()
,poll()
或poll_one()
将除非有预先调用立即返回reset()
.
以下陈述是什么意思?
[...]不再派遣处理人员[...]
在试图理解行为时io_service::run()
,我遇到了这个例子(例3a).在其中,我观察到io_service->run()
块和等待工单.
// WorkerThread invines io_service->run()
void WorkerThread(boost::shared_ptr<boost::asio::io_service> io_service);
void CalculateFib(size_t);
boost::shared_ptr<boost::asio::io_service> io_service(
new boost::asio::io_service);
boost::shared_ptr<boost::asio::io_service::work> work(
new boost::asio::io_service::work(*io_service));
// ...
boost::thread_group worker_threads;
for(int x = 0; x < 2; ++x)
{
worker_threads.create_thread(boost::bind(&WorkerThread, io_service));
}
io_service->post( boost::bind(CalculateFib, 3));
io_service->post( boost::bind(CalculateFib, 4));
io_service->post( …
Run Code Online (Sandbox Code Playgroud) 我在具有多个网络接口的主机之间使用多播UDP.我正在使用boost :: asio,并且被接收器必须进行的2个操作混淆:bind,然后是join-group.
当您对加入的每个组播组执行此操作时,为什么需要在绑定期间指定接口的本地地址?
姐妹问题是关于多播端口:因为在发送期间,您发送到多播地址和端口,为什么在订阅多播组期间,您只需指定地址,而不是端口 - 在混乱的呼叫中指定的端口绑定.
注意:"join-group"是一个包装器setsockopt(IP_ADD_MEMBERSHIP)
,如文档所示,可以在同一个套接字上多次调用以订阅不同的组(通过不同的网络?).因此,每次订阅组时,抛弃绑定调用并指定端口是完全合理的.
从我所看到的,总是绑定到"0.0.0.0"并在加入组时指定接口地址,效果非常好.困惑.
我正在寻找一个现代的C++ HTTP库,因为libcurl的缺点很难被C++包装器解决.基于Boost.ASIO的解决方案已成为事实上的C++ TCP库,因此是首选.
我正在使用Boost ASIO库在C++中编写服务器.我想得到客户端IP的字符串表示形式,以显示在我的服务器日志中.有谁知道怎么做?
这个问题是继续我应该在Android中选择Boost Asio或Aysnc Socket线程吗?问:
Boost库旨在广泛使用,并可在各种应用程序中使用,但Android和iOS尚无官方支持
仅供参考.我一直在使用以下链接创建示例Android应用程序,但尚未成功:(
https://github.com/MysticTreeGames/Boost-for-Android
http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/
如何将boost库(包括shared_ptr)与Android NDK和STLport一起使用
https://sites.google.com/site/fourdollars/android/android-mk
https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/4lxhsKFe7Ho
http://www.crystax.net/trac/ndk/ticket/6
提前致谢.
如何使用C++中的boost创建线程池,如何将任务分配给线程池?
我注意到boost.asio有很多涉及套接字,串行端口和各种非文件示例的例子.对于我来说,Google并没有真正提到过很多,因为asio是一个很好或有效的异步文件i/o方法.
我有大量的数据我想异步写入磁盘.这可以通过Windows(我的平台)中的原生重叠io来完成,但我更喜欢拥有独立于平台的解决方案.
我好奇,如果
boost-asio ×10
c++ ×8
boost ×7
android ×1
android-ndk ×1
bind ×1
boost-thread ×1
curl ×1
file-io ×1
http ×1
ios ×1
libuv ×1
multicast ×1
networking ×1
sockets ×1
threadpool ×1
tr1 ×1
udp ×1