Este artigo foi traduzido por máquina.

Nota do editor

Pensando sobre a programação assíncrona

Michael Desmond

 

Michael DesmondEste mês MSDN Magazine explora os poderosos programação recursos assíncronos vindo para as próximas versões do C#, Visual Basic e o Microsoft.NET Framework. Ajuda disponível hoje via Visual Studio Async CTP, a nova funcionalidade a resolver uma das maiores dores de cabeça emergentes na idade dos sistemas multinucleados e computação em nuvem: as penalidades ocasionadas quando o thread é bloqueado aguardando a coisas como dados para retornar de um servidor remoto ou um cálculo em outro thread para concluir.

Eu falou com Torgersen Mads, autor de um dos recursos deste mês na programação assíncrona e gerente de programas principal equipe C# e Visual Basic de linguagem da Microsoft. Anotações he quase todos os aplicativos está se tornando conectado e que a latência está emergindo como "um problema central ao código ao redor". Então por que não vemos async suportam na.NET Framework 4?

"No ponto onde o conjunto de recursos foi bloqueado para que o lançamento, tínhamos um sério entendimento sobre um recurso de linguagem deve aparência,", diz Torgersen. "Entretanto, F# enviados ao mesmo tempo com um recurso de linguagem assíncrona que acabou por inspiradora conosco muito. No momento em que enviamos 4 C# e Visual Basic 10, podemos foram vendo evidências de montagem que assincronismo deve ser próxima em linha e que era um problema que realmente precisava ser resolvido no nível do idioma."

Torgersen descreve a abordagem de implementação do núcleo como bastante simples. A solução era "pausar e continuar" a execução de código em trânsito. Em vez de cortar até o código gerado em bits separadas, a equipe usou uma técnica para "parachute" para o ponto correto no código do usuário. A abordagem fornece a vantagem de reter a estrutura do código fonte original — e os resultados são difíceis de contestar.

Torgersen "Que tivemos um Laço surpreendentemente pequeno bug de inconsistências," afirma.

Evolução de Async

Os novos recursos de programação assíncronos do C# e Visual Basic marcam o mais recente de uma série de etapas evolucionários importantes de linguagens de programação de gerenciada principal da Microsoft. Nos últimos anos, os idiomas assumiram aspectos de programação funcional e dinâmica e programação assíncrona mais recentemente. Como Lisa Feigenbaum, gerente de programa do grupo de Visual Studio na Microsoft, explica, o esforço foi feito para incorporar esses recursos de maneiras que "melhor ajuste o estilo de cada idioma."

"Por exemplo, interoperabilidade de linguagem dinâmica foi adicionada ao Visual Basic, tirando proveito das construções de ligação tardia que já faziam parte do idioma. Além disso, no C#, adicionamos um tipo estático, chamado dinâmico,"afirma Feigenbaum. "Falando da programação funcional, ao adicionar lambdas a Visual Basic, usamos a sintaxe da palavra-chave familiarizado com Sub/End Sub e função/End Function. No entanto, para C#, que é menos detalhada, podemos símbolos usados para projetar a sintaxe com ' = >'. Esses designs ajudam cada idioma preservar seu caractere original e permanecer familiar aos desenvolvedores à medida que cresce."

Adicionando nova funcionalidade significativa para uma linguagem de programação nunca é uma questão fácil. Feigenbaum descreve o design de linguagem como um "processo muito conservadora", enfatizando que recursos não são somados até que elas estão certas exatamente. No caso de assíncrono, a nova funcionalidade foi construída sobre fundamentos introduzidos com a última versão do.NET Framework.

"Por exemplo, os designs de async Visual Studio vNext o tipo de tarefa que foi adicionado ao desenvolver o.NET Framework.NET 4,"afirma Feigenbaum. "Usando essa base, suporte adicional, bem como do Framework que está sendo adicionado na próxima versão, conseguimos, por fim projetar uma sintaxe de linguagem muito elegante que estávamos felizes com assíncrona em Visual Studio vNext."

Hoje, os desenvolvedores podem trabalhar com o CTP Async para se familiarizar com os novos recursos, chegando a C# e Visual Basic. Nesse ínterim, Torgersen diz que os desenvolvedores podem fazer uma coisa a se preparar melhor para a idade de async: se tornam baseados em tarefas.

"Mesmo on.NET 4, os tipos de tarefa são uma moeda muito melhor para a atividade assíncrona que os padrões mais antigos que temos. Você ainda precisará ser baseado em retorno de chamada porque você não tem suporte a idioma, mas uma maneira mais elegante. E ter todas as suas assinaturas seguem o novo baseado em tarefas irão prepará-lo maravilhosamente bem para o dia quando você pode consumir aqueles com apenas uma expressão de 'aguardar' simples".