2014-03-24 2 views
1

Atmel 평가판의 C++에서 타임 아웃 기능을 실현하고 싶습니다.C++ 타임 아웃 기능

프로그램이 "start()"함수를 열고 "0.5s"이내에이 함수가 완료되지 않으면 프로그램을 종료해야합니다.

이와 비슷한 작업을 수행하는 기존 기능이 있습니까?

관련 matl

+0

피 호출자에서 수면을 사용하고 잠자기 후 호출자에게 –

+0

으로 돌아가십시오.'std :: async'와'std :: chrono'를보세요 – OMGtechy

+1

@AliKazmi : sleep 함수는 운영체제가 필요합니다. 임베디드 시스템에는 OS가 없을 수 있습니다. –

답변

1

예 : std::future::wait_for. future_status::ready 또는 future_status::timeout 중 하나가 표시됩니다.

+1

이것은 C++ 11 (컴파일러에 따라 -std = C++ 11 또는 -std = C++ 0x)에서만 가능합니다. C++ 03에서는 OS 호출 (있는 경우)을 사용하거나 인터럽트를 통해 구현해야합니다. –

+0

@ elvis.dukaj : 물론입니다. 그러나 문제는 C++ 03 또는 C++ 14 태그가 아니므로 합리적인 가정은 오늘날 정의 된 C++입니다. – MSalters

1

임베디드 시스템에서는 대상 시스템이 표준화되지 않았기 때문에 이러한 종류의 기능은 항상 손으로 제작되었습니다.

OS를 구입하고 메시징 시간 초과 및 절전과 같은 방법을 사용할 수 있습니다.

OS가 없으면 타이머와 타이머 인터럽트 (ISR)를 사용하여 기능을 직접 만들어야합니다.

+0

타이머 및 타이머 인터럽트로 시간 초과를 만드는 방법에 대한 제안이 있습니까? 지금은 이런 식으로 깨닫는 법을 모르겠습니다. 프로그램이 함수 start()에 걸려있는 경우 어떻게 타이머 데이터에 액세스 할 수 있습니까? 추론에서 단지 \t 오류 일 수도 있지만 지금은 이해가 가지 않습니다. – matl

+0

@matl 그것은 hw에만 매우 특이합니다. 당신은 enviorment와 함께 주어진 도서관을 참조해야합니다. –