Eventos assíncronos e simultaneidade
Importante
Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (Integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).
A plataforma Azure Sphere suporta vários mecanismos comuns POSIX e Linux para lidar com eventos assíncronos e simultaneidade, incluindo loops de eventos e threads POSIX.
Os exemplos demonstram como usar loops de eventos do Azure Sphere para gerenciar com segurança cenários controlados por eventos. Por exemplo, o exemplo UART pausa até que o dispositivo receba dados pelo UART ou até que um botão seja pressionado para enviar dados pelo UART.
Os loops de eventos são uma parte padrão da maioria das interfaces gráficas do usuário e um padrão padrão do Linux. Os loops de eventos do Azure Sphere são uma implementação específica de loops de eventos que permitem que os aplicativos do Azure Sphere recebam notificações do sistema, como eventos relacionados a atualizações.
Recomendamos o padrão de loop de evento pelos seguintes motivos:
Os loops de eventos do Azure Sphere são necessários para gerenciar eventos do sistema, como notificações de atualização do sistema operacional e do aplicativo. Você deve usar loops de eventos para adiar atualizações de dispositivo.
Os loops de eventos permitem a programação assíncrona para que várias tarefas possam progredir simultaneamente.
Os loops de eventos minimizam a sobrecarga de memória. Cada thread carrega a sobrecarga de memória de uma pilha separada. As pilhas Linux são alocadas com memória virtual e crescem sob demanda até um limite superior, portanto, não há custo fixo. Portanto, os threads são mais difíceis de implementar em um sistema restrito como o Azure Sphere MT3620 devido ao custo adicional de recursos.
A sincronização entre threads é complexa e pode levar a problemas como deadlocks. Os loops de eventos são mais simples nesse sentido.
Embora seja recomendável usar loops de eventos sempre que possível, se seu aplicativo exigir threads, o Azure Sphere dá suporte a threads POSIX. É responsabilidade do aplicativo garantir a execução segura de threads. As chamadas de aplicativos para algumas funções applibs são thread safe, mas outras não, conforme indicado nos arquivos de cabeçalho. Se o arquivo de cabeçalho não mencionar a segurança do thread, você deve assumir que a função ou biblioteca relevante não é thread safe.