비동기 이벤트 및 동시성
Important
Azure Sphere(레거시) 설명서입니다. Azure Sphere(레거시)는 2027년 9월 27일에 사용 중지되며 사용자는 이 시간까지 Azure Sphere(통합)로 마이그레이션해야 합니다. TOC 위에 있는 버전 선택기를 사용하여 Azure Sphere(통합) 설명서를 볼 수 있습니다.
Azure Sphere 플랫폼은 이벤트 루프 및 POSIX pthreads를 포함하여 비동기 이벤트 및 동시성을 처리하는 몇 가지 일반적인 POSIX 및 Linux 메커니즘을 지원합니다.
샘플에서는 Azure Sphere 이벤트 루프를 사용하여 이벤트 기반 시나리오를 안전하게 관리하는 방법을 보여 줍니다. 예를 들어, UART 샘플은 디바이스가 UART를 통해 데이터를 받을 때까지 또는 단추를 눌러 UART를 통해 데이터를 전송할 때까지 일시 중지됩니다.
이벤트 루프는 대부분의 그래픽 사용자 인터페이스 및 표준 Linux 패턴의 표준 부분입니다. Azure Sphere 이벤트 루프는 Azure Sphere 애플리케이션이 업데이트와 관련된 이벤트와 같은 시스템 알림을 받을 수 있도록 하는 이벤트 루프의 특정 구현입니다.
다음과 같은 이유로 이벤트 루프 패턴을 사용하는 것이 좋습니다.
OS 및 애플리케이션 업데이트 알림과 같은 시스템 이벤트를 관리하려면 Azure Sphere 이벤트 루프가 필요합니다. 이벤트 루프를 사용하여 디바이스 업데이트를 연기해야 합니다.
이벤트 루프는 여러 작업이 동시에 진행될 수 있도록 비동기 프로그래밍을 허용합니다.
이벤트 루프는 메모리 오버헤드를 최소화합니다. 모든 스레드는 별도의 스택의 메모리 오버헤드를 전달합니다. Linux 스택은 가상 메모리와 함께 할당되며, 고정 비용이 없도록 요청 시 상한으로 증가합니다. 따라서 추가 리소스 비용으로 인해 Azure Sphere MT3620과 같은 제한된 시스템에서 스레드를 구현하기가 더 어렵습니다.
스레드 간의 동기화는 복잡하며 교착 상태와 같은 문제가 발생할 수 있습니다. 이와 관련하여 이벤트 루프는 더 간단합니다.
실행 가능한 경우 이벤트 루프를 사용하는 것이 좋습니다. 애플리케이션에 스레드가 필요한 경우 Azure Sphere는 POSIX pthreads를 지원합니다. 스레드로부터 안전한 실행을 보장하는 것은 애플리케이션의 책임입니다. 일부 applibs 함수에 대한 애플리케이션 호출은 스레드로부터 안전하지만 다른 함수는 헤더 파일에 표시된 대로 안전하지 않습니다. 헤더 파일에 스레드 안전성 언급이 없는 경우 관련 함수 또는 라이브러리가 스레드로부터 안전하지 않다고 가정해야 합니다.