Simultaneidade e eventos assíncronos
Importante
Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) 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 do Azure Sphere dá suporte a vários mecanismos comuns do POSIX e do Linux para lidar com eventos assíncronos e simultaneidade, incluindo loops de eventos e pthreads POSIX.
Os exemplos demonstram como usar loops de eventos do Azure Sphere para gerenciar com segurança cenários controlados por eventos. Por exemplo, a amostra UART faz uma pausa até que o dispositivo receba dados sobre UART ou até que um botão seja pressionado para enviar dados pela 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 eventos 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 as atualizações do 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 do 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 aspecto.
Embora seja recomendável usar loops de eventos sempre que possível, se seu aplicativo exigir threads, o Azure Sphere dará suporte a pthreads POSIX. É responsabilidade do aplicativo garantir a execução thread-safe. As chamadas de aplicativo 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 de thread, você deverá supor que a função ou biblioteca relevante não é thread-safe.