나는 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();
가에 완료 C++ 03 deadline_timer 예입니다 : 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
치명적일 때까지 2 초 후에 도달했습니다
+0
네, 고맙습니다! –
1
std::this_thread::sleep_for(std::chrono::seconds(10));
io_service.stop();
은 아닌가요?
사용 deadline_timer.
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. 시간이 지난 후에 스레드를 중지하십시오.
- 2. 일정 시간이 지난 후 ToggleButton을 선택 취소하십시오.
- 3. 일정 시간이 지난 후 무비 클립 시작
- 4. 일정 시간이 지난 후 로그 아웃
- 5. 일정 시간이 지난 후 div를 바꿉니다.
- 6. 일정 시간이 지난 후 사용자 로그 아웃
- 7. 상태 머신에서 일정 시간이 지난 후 전환
- 8. 일정 시간이 지난 후에 방정식을 생성합니다.
- 9. 일정 시간이 지난 후 작업을 실행하는 방법은 무엇입니까?
- 10. 일정 시간이 지난 후 ASP.NET에서 함수를 자동으로 호출하는 방법은 무엇입니까?
- 11. 일정 시간이 지난 후 동적 시간 및 시간 초과 받기
- 12. 일정 시간이 지난 후 타이머를 중지하는 방법은 무엇입니까?
- 13. 일정 시간이 지난 후 파이썬 응답을 만드는 방법은 무엇입니까?
- 14. [body onload] 일정 시간이 지난 후 div가 사라집니다?
- 15. 일정 시간이 지난 후 콜백 함수를 호출하는 방법
- 16. Log4j - DailyRollingFileAppender - 일정 시간이 지난 후 롤 파일이 삭제됩니까?
- 17. 일정 시간이 지난 후에 .val을 제거하십시오.
- 18. 시간이 지난 후 기능을 실행하십시오
- 19. 일정 시간이 지난 후에 SESSION 변수를 저장할 수 있습니까?
- 20. 일정 기간이 지난 후 BroadcastReceiver 시작 서비스
- 21. 일정 기간이 지난 후 데이터 삽입
- 22. 일정 시간이 지난 후에 어떻게 방법을 취소 할 수 있습니까?
- 23. 동결 활동없이 일정 시간이 지난 후에보기 선택을 해제하는 방법
- 24. boost :: asio bug? task_io_service가 io_service를 파괴하기 전에
- 25. boost :: asio :: io_service를 사용하여 주 데이터를 검색하십시오.
- 26. Matlab에서 지정된 시간이 지난 후 브레이크를 반복하십시오.
- 27. 특정 시간이 지난 후 타이머를 중지하는 중
- 28. 특정 시간이 지난 후 글꼴 색상 변경
- 29. Windows에서 특정 시간이 지난 후 시스템 종료()
- 30. Matlab에서 지정된 시간이 지난 후 통합을 중단하십시오.
편집 – ikh