Capítulo 17. Recursos da linguagem assíncrona
Este trabalho foi traduzido com recurso a IA. Agradecemos o teu feedback e comentários: translation-feedback@oreilly.com
O C# fornece suporte a nível de linguagem para usar e implementar métodos assíncronos. As APIs assíncronas são frequentemente a maneira mais eficiente de usar determinados serviços. Por exemplo, a maioria das E/S é tratada de forma assíncrona dentro do kernel do SO, porque a maioria dos periféricos, como controladores de disco ou adaptadores de rede, são capazes de fazer a maior parte do seu trabalho de forma autónoma. Eles precisam que a CPU esteja envolvida apenas no início e no final de cada operação.
Embora muitos dos serviços oferecidos pelos sistemas operacionais sejam intrinsecamente assíncronos, os desenvolvedores muitas vezes optam por usá-los através de APIs síncronas (ou seja, aquelas que não retornam até que o trabalho esteja completo). Isso pode desperdiçar recursos, porque bloqueia a thread até que a E/S seja concluída. As threads têm custos indiretos e, se o seu objetivo é obter o melhor desempenho em um aplicativo altamente simultâneo (por exemplo, um aplicativo da Web que atende a um grande número de usuários), geralmente é melhor ter um número relativamente pequeno de threads do sistema operacional. Idealmente, sua aplicação não teria mais threads de SO do que threads de hardware, mas isso só é ideal se você puder garantir que as threads só bloqueiam quando não há trabalho pendente para elas fazerem. ...