我有一個boost :: asio :: io_service正在做一些工作。現在我想在一段時間後停止這項服務。我的第一個方法是使用boost::thread(io_service.run())
,但然後我得到錯誤。
有其他方法可以停止io_service嗎?
謝謝!在一段時間後停止boost :: io_service
2
A
回答
2
您可以使用deadline_timer
。
您也可以運行在另一個線程的服務就像你試過:
boost::thread t = boost::thread(boost::bind(&boost::asio::io_service::run, boost::ref(io_service));
// sometime
io_service.stop(); // io_service is threadsafe
t.join();
這裏有一個deadline_timer例如完成C++ 03:Live On Coliru
#include <boost/asio.hpp>
#include <boost/thread.hpp>
#include <boost/asio/deadline_timer.hpp>
#include <iostream>
using namespace boost::asio;
using namespace boost;
io_service svc;
deadline_timer timer(svc);
void work()
{
this_thread::sleep_for(chrono::milliseconds(100));
std::cout << "Work done, rescheduling\n";
svc.post(work);
}
void expiration_handler(system::error_code ec)
{
if (ec != error::operation_aborted)
svc.stop();
}
int main()
{
svc.post(work);
timer.expires_from_now(posix_time::seconds(2));
timer.async_wait(expiration_handler);
svc.run();
}
這將打印
Work done, rescheduling
直到死亡ne在2秒後達到
+0
是的,這是工作,謝謝! –
1
std::this_thread::sleep_for(std::chrono::seconds(10));
io_service.stop();
難道不是嗎?
boost::asio::deadline_timer stop_timer(io_service);
...
// If require stopping
stop_timer.expires_from_now(boost::posix_time::seconds(10));
stop_timer.async_wait(
[&io_service](const boost::system::error_code &ec)
{
io_service.stop();
});
相關問題
- 1. Boost io_service停止?
- 2. 在一段時間後停止線程
- 3. 在一段時間後停止線程
- 4. AsyncTask在一段時間後停止
- 5. mssql_connect停止工作一段時間後
- 6. 一段時間後聲音停止 - Android
- 7. 在C#中停留一段時間後停止計時器
- 8. 在某段時間後停止線程
- 9. NSTimer在一段時間後在後臺停止
- 10. NSTimer在一段時間後在後臺停止射擊
- 11. 我的服務在一段時間後停止或暫停
- 12. FusedLocationApi.requestLocationUpdates()在一段時間後停止間隔請求
- 13. 如何在一段時間間隔後停止服務
- 14. 安卓後臺服務在一段時間後停止
- 15. ios7 UINavigationBar在一段時間後在狀態欄停止延伸
- 16. 在一定的時間後停止recvfrom()
- 17. boost :: asio io_service在stop()之後不返回()
- 18. MySQL事件在一段時間後停止工作
- 19. HTTP服務器在一段時間後停止(Node.js)
- 20. MongoDB在一段時間後停止工作
- 21. IP Camera在一段時間後停止流式傳輸
- 22. Chrome:onaudioprocess在一段時間後停止調用
- 23. 如何在一段時間過後立即停止線程?
- 24. 在一段時間後停止Android視頻
- 25. 處理程序在一段時間後停止
- 26. Perl腳本在一段時間後停止工作
- 27. MediaPlayer在一段時間後停止播放
- 28. 支持Https的Localhost HttpListener - 在一段時間後停止工作
- 29. 語音識別在一段時間後停止收聽
- 30. Pubnub訂閱在一段時間後停止接收消息
請參閱編輯 – ikh