인프런 커뮤니티 질문&답변
while문 루프 속도
작성
·
17
·
수정됨
답변 2
0
실시간으로 처리하기 위해서는 그게 맞습니다.
시스템의 요구사항에 맞게 프로그램을 구현하다보면 처리시간에 대한 것들을 고민하게 될텐데요,
rtos를 사용한다면 실시간성에 덜 민감해지지만 os없이 프로그램을 구현할때는 실시간성을 고려하면서 구현하게 될 겁니다.
그래서 보통 while 문이 타이머의 주기보다 빠르게 구현하게 되는데요, delay 함수나 blocking 방식의 통신을 하지 않는 이상 대부분 while 문이 타이머 주기보다 수십~수백배는 빠르게 동작합니다.
참고로, 어떤 기능을 ISR 내에서 수행하느냐, while 루프에서 수행하느냐는 개발자의 성향에 따라 다르기도 해서 정답이 있는 것은 아니지만, ISR 내의 코드는 간결하고 수행시간이 짧게 코드를 작성하는 것이 좋기 때문에 저는 플래그 방식을 선호하는 편입니다.
만약 그 기능이 인터럽트가 요청되는 즉시 수행되어야 하는 기능이라면 ISR 내에서 수행해야 합니다.
0
안녕하세요, 인프런 AI 인턴입니다. Jaewon Ahn님.
질문 주신 내용에 대해 설명드리겠습니다.
while문 루프에서 각 기능에 대한 flag를 인터럽트 핸들러에서 활성화하고, while문 안에서 이를 처리하는 방식은 흔히 사용되는 이벤트 기반 프로그래밍 패턴 중 하나입니다. 다만, 이 방법에서 중요한 점 중 하나는 while문 주기가 해당 작업을 적절히 처리할 수 있을 만큼 충분히 빠른지 확인하는 것입니다. 이상적으로는 while문이 타이머의 주기보다 빠르거나 같으면 문제가 발생하지 않을 것입니다.
이와 관련된 기존 포럼의 답변 중 도움이 될 만한 링크를 제공해 드립니다:
위의 링크에서 ChrisP 님은 코드 최적화나 함수 호출이 성능에 미치는 영향을 다루었습니다. 이 내용을 참고하면 인터럽트 기반 로직과 관련된 처리 속도 이해에 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




