다음 코드에서는 poll_one()
이 호출 될 때 하나의 처리기 만 실행되기를 기대하기 때문에 항상 출력이 1 일 것으로 예상합니다. 그러나 한 번 약 300 번, 출력 실제로 3입니다. 부스트 라이브러리에 대한 내 이해를 기반으로,이 잘못된 것 같습니다. 비 결정적 행동이 버그인지 예상 되는가? 부스트 ASIO 사용io_service :: poll_one 비 결정적 동작
#include <boost/asio.hpp>
int main() {
boost::asio::io_service io;
boost::asio::io_service::work io_work(io);
boost::asio::io_service::strand strand1(io);
boost::asio::io_service::strand strand2(io);
int val = 0;
strand1.post([&val, &strand2]() {
val = 1;
strand2.post([&val]() {
val = 2;
});
boost::asio::spawn(strand2, [&val](boost::asio::yield_context yield) {
val = 3;
});
});
io.poll_one();
std::cout << "Last executed: " << val << std::endl;
return 0;
}
1.60.0.6
왜 downvote? 답변 됨 thanks –
물론 완벽하고 최소한으로 검증 가능하며 쉽게 컴파일 할 수 있습니다. 예외는 발생하지 않습니다. –
케이스 수를 3 개에서 2 개로 줄이는 경우 문제가 나타나지 않습니다. –