Waitforexit asynchronous vs synchronous
Quando você executa algo de forma síncrona, você espera que ele termine antes de passar para outra tarefa. Quando você executa algo de forma assíncrona, você pode passar para outra tarefa antes de terminar. Dito isto, no contexto de computadores isso se traduz em executar um processo ou tarefa em outro tópico. Um segmento é uma série de comandos - um bloco de código - que existe como uma unidade de trabalho. O sistema operacional pode gerenciar vários threads e atribuir um segmento de uma peça (fatia) do tempo do processador antes de mudar para outro segmento para dar uma vez para fazer algum trabalho. No seu núcleo (perdoa o trocadilho), um processador pode simplesmente executar um comando - não tem conceito de fazer duas coisas ao mesmo tempo. O sistema operacional simula isso, alocando fatias de tempo para diferentes threads. Agora, se você apresentar muitos processadores de núcleo na mistura, então as coisas podem realmente acontecer ao mesmo tempo. O sistema operacional pode alocar o tempo para um segmento no primeiro processador, então aloque o mesmo bloco de tempo para outro segmento em um processador diferente. Tudo isso é sobre permitir que o sistema operacional gerencie a conclusão de sua tarefa enquanto você pode continuar no seu código e fazer outras coisas. A programação assíncrona é um tópico complicado por causa da semântica de como as coisas se juntam quando você pode fazê-las ao mesmo tempo. Existem inúmeros artigos e livros sobre o assunto, um olhar respondeu 14 de abril de 09 às 15:43 Sincrônico (um segmento): Assíncrono (um segmento): pontos de início e final das tarefas A, B, C representadas pelo lt. Personagens gt. Fatias de tempo de CPU representadas por barras verticais. Os meios sincronizados estão conectados ou dependem de algum modo. Em outras palavras, duas tarefas síncronas devem estar cientes umas das outras, e é preciso executar de alguma forma que seja dependente da outra. Na maioria dos casos, isso significa que não se pode iniciar até que o outro seja concluído. Assíncrono significa que eles são totalmente independentes e nem um deve considerar o outro de forma alguma, seja em iniciação ou em execução. Como um lado, devo mencionar isso tecnicamente, o conceito de síncrono assíncrono realmente não tem nada a ver com os tópicos. Embora, em geral, seria incomum encontrar tarefas assíncronas executadas no mesmo segmento, é possível (veja abaixo para, por exemplo) e é comum encontrar duas ou mais tarefas executando de forma síncrona em segmentos separados. Não, o conceito de síncrono assíncrono deve ser feito unicamente com a questão de se uma segunda tarefa ou posterior pode ser iniciada antes que a outra (primeira) tarefa seja concluída ou se ela deve aguardar. Isso é tudo. Que thread (ou threads), ou processos, ou CPUs, ou mesmo, o hardware, as tarefas executadas não são relevantes. Na verdade, para fazer este ponto, editei os gráficos para mostrar isso. EXEMPLO ASÍNCRONO. Ao resolver muitos problemas de engenharia, o software é projetado para dividir o problema geral em múltiplas tarefas individuais e executá-las de forma assíncrona. Inverter uma matriz, ou um problema de análise de elementos finitos, são bons exemplos. Na computação, classificar uma lista é um exemplo. A rotina de classificação rápida, por exemplo, divide a lista em duas listas e classifica cada uma delas, recitando-se recursivamente. Em ambos os exemplos acima, as duas tarefas podem (e muitas vezes foram) executadas de forma assíncrona. Eles não precisam estar em segmentos separados. Mesmo uma máquina com uma CPU, e apenas uma thread de execução pode ser codificada para iniciar o processamento de uma segunda tarefa antes de uma primeira conclusão. O único critério é que os resultados de uma tarefa não são necessários como entradas para a outra tarefa. Enquanto os tempos de início e término das tarefas se sobrepõem, (somente possível se a saída de ambos for necessária como entradas para o outro), eles estão sendo executados de forma assíncrona, independentemente de quantos fios estejam em uso. EXEMPLO SYNCHRONOUS. Qualquer processo consistente em várias tarefas onde as tarefas devem ser executadas em seqüência, mas uma deve ser executada em outra máquina (Fetch andor update data, obtenha uma cotação de estoque de um serviço financeiro, etc.). Se estiver em uma máquina separada, ela está em um segmento separado, seja síncrono ou assíncrono. Respondeu Apr 14 09 às 15:53 Em termos mais simples: você está em uma fila para obter um ticket de filme. Você não consegue um até que todos na frente de vocês recebam um, e o mesmo se aplica às pessoas que estão na fila atrás de você. Você está em um restaurante com muitas outras pessoas. Você pede sua comida. Outras pessoas também podem pedir sua comida, eles não precisam esperar para que sua comida seja cozida e servida antes que eles possam pedir. Na cozinha os trabalhadores do restaurante estão continuamente cozinhando, servindo e recebendo ordens. As pessoas terão a comida servida assim que for cozida. Respondeu 7 de novembro às 15:43 Agora ESTO eu posso explicar para um filho de 4 anos. Mesmo que ela não possa pronunciá-lo, ela nunca esquecerá o significado. Dois polegares acima ndash Chris22 27 de maio 16 às 17:13 Obrigado pela explicação simples, pois eu só aprendo o desenvolvimento da web e encontre threads etc, confundindo. Isso é tão fácil de entender :) ndash RiCHiE 30 de maio 16 às 7:08 Eu tentarei explicar tão simplesmente quanto posso, então lembre-se (espero) de lembrar: meu chefe é um homem ocupado. Ele me diz para escrever o código. Eu digo a ele: tudo bem. Comecei e ele está me observando como um abutre, parado atrás de mim, do meu ombro. Eu gosto de Dude, WTF: por que você não vai e faz alguma coisa enquanto eu acabei com isso, como: Não, estou esperando aqui até você terminar. Isso é síncrono. O chefe me diz para fazê-lo, e, em vez disso, esperando por meu trabalho, o chefe sai e faz outras tarefas. Quando eu terminar meu trabalho, eu simplesmente me relato ao meu chefe e digo: Im DONE Esta é a Execução assíncrona. Isso realmente se resume a algo tão simples quanto espero que ajude a ser respondida em 8 de junho 15 às 11:13 Isso foi engraçado, eu tive que superar meu colega para mostrar. Ndash cocojiambo 22 de fevereiro 16 às 12:34 De fato, muito engraçado. Estou certo de que ninguém pode esquecer isso. Ndash Jimmy Ilenloa 30 de novembro 16 às 19:32 I39m FAZ. É ainda mais engraçado quando você toma isso como uma demissão. Ndash Daedric 14 de dezembro 16 às 8:16 Execução síncrona significa que a execução acontece em uma única série. A-gtB-gtC-gtD. Se você estiver chamando essas rotinas, A será executado e, em seguida, finalizará, então B começará, depois terminará, então C será iniciado, etc. Com a execução assíncrona. Você começa uma rotina e deixa-a correr em segundo plano enquanto você inicia seu próximo, então, em algum momento, espere que isso termine. É mais como: Inicie A-gtB-gtC-gtD-gt Aguarde até A terminar A vantagem é que você pode executar BC e ou D enquanto A ainda está em execução (em segundo plano, em um segmento separado), para que você possa tomar Melhor vantagem de seus recursos e tem menos pendentes ou espera. Síncrono significa que o chamador aguarda a resposta ou a conclusão, assíncrono que o chamador continua e uma resposta vem mais tarde (se aplicável). Isso sempre irá ultrapassar: mas se fôssemos fazer algo como assíncrono (várias maneiras de fazê-lo), a saída pode se tornar: porque o método que faz a chamada assíncrona continuaria imediatamente com a próxima linha de código. Eu digo que poderia, porque a ordem de execução não pode ser garantida com operações assíncronas. Ele também pode ser executado como o original, dependendo dos cronogramas, etc. Eu acho que isso é uma explicação um pouco redonda, mas ainda esclarece o uso do exemplo da vida real. Digamos que tocar um áudio envolve três etapas: Obter a música compactada do disco rígido. Descompacte o áudio. Reproduza o áudio descompactado. Se o seu reprodutor de áudio forçar 1,2,3 sequencialmente para cada música, então é síncrono. Você terá que aguardar algum tempo para ouvir a música até que a música seja obtida e descomprimida. Se o seu reprodutor de áudio pisa 1,2,3 independentemente um do outro, então é assíncrono. Ie. Ao reproduzir áudio 1 (passo 3), se ele extrair o áudio 3 do disco rígido em paralelo (passo 1) e descompacta o áudio 2 em paralelo. (Passo 2) Você vai acabar ouvindo a música sem esperar muito para buscar e descomprimir. Respondeu Apr 14 09 às 16:27 aJ. 21.3k 9679 16 9679 65 9679 105 EJP 205k 9679 17 9679 152 9679 268 Simplesmente disse que a execução assíncrona está fazendo coisas em segundo plano. Por exemplo, se você deseja baixar um arquivo da internet, você pode usar uma função síncrona para fazer isso, mas bloqueará seu segmento até o arquivo terminar de fazer o download. Isso pode fazer com que seu aplicativo não responda a qualquer entrada do usuário. Em vez disso, você pode baixar o arquivo em segundo plano usando o método assíncrono. Nesse caso, a função de download retorna imediatamente e a execução do programa continua normalmente. Todas as operações de download são feitas em segundo plano e seu programa será notificado quando tiver terminado. Respondeu 14 de abril de 09 às 15:41 como seu exemplo será mais rápido. No final, você não pode tocar o arquivo até o fim do período de download. Você pode explicar, acho que não compreendo async então e é provavelmente eu, mas o que esse outro passo ou processo estará fazendo enquanto o outro processo está sendo executado (obtendo o download). Quero dizer, o que você pode fazer até receber esse processo assíncrono de volta (download? ) No seu aplicativo. Não entendi. Então, o que, você ainda tem que mostrar ao usuário algum tipo de mecanismo de espera, não importa o que em qualquer situação ndash PositiveGuy 10 de dezembro 12 às 5:48 Ele não precisa mais rápido. É sobre não bloquear o segmento principal, de modo que ele possa processar outro tipo de entrada do usuário. Por exemplo, o usuário pode querer cancelar o download ou começar a baixar outro arquivo simultaneamente. Ndash Micha Piaskowski 10 de dezembro 12 às 15:19 Em poucas palavras, a sincronização refere-se a dois ou mais pontos de início e final do processo, NÃO suas execuções. Neste exemplo, o ponto final do processo como sincronizado com o ponto de início do Processo Bs: os processos assíncronos, por outro lado, não têm seus pontos de início e pontos finais sincronizados: onde o processo A se sobrepõe ao processo B, eles estão sendo executados simultaneamente ou de forma síncrona (definição do dicionário), portanto, a confusão. Pode ser útil pensar em termos de processos assíncronos e síncronos em vez de execução assíncrona e síncrona. DineshSaini - Meu diagrama é um pouco diferente. Para maior clareza, coloquei A no topo de B em ambos os casos, enfatizando se os pontos de extremidade do seu amplificador inicial estão sincronizados. O diagrama de Charles Bretana faz com que os processos síncronos se sequenciem sem quotar nada. (Eu ia comentar abaixo sua resposta para me convencer, mas percebi que seria mais fácil mostrar o novo diagrama.) Ndash entr0p3te 19 de agosto 15 às 14:00 Grandes diagramas. Eu acho que a maneira de chamar a primeira SYNC, é que o começo e o fim de A no diagrama superior são efetivamente ao mesmo tempo, no sentido de que nenhum outro evento interveio ou poderia ter interferido com a conclusão da A39. A sincronização pode se referir a uma única tarefa de forma isolada, como adicionar aos registros da CPU, cujo início e fim estão tão próximos, de modo a efetivamente ser sincrônico em termos de dicionário. Ndash Dean Radcliffe 28 de dezembro 16 às 15:32 Ao executar uma seqüência como: abcd, se obtivermos uma falha no meio de execução como: Então, começamos desde o início: isso é síncrono. Se, no entanto, nós temos o mesmo Seqüência para executar: abcd e temos uma falha no meio: mas em vez de reiniciar desde o início, reiniciamos a partir do ponto de falha: isto é conhecido como assíncrono. Diferença entre transferência de dados síncrono e assíncrono As transferências de dados ocorrem em Rajadas de informações, cada uma composta por uma certa quantidade de bits. Para que um receptor tenha sentido os dados, deve saber quando começar e quando parar de ler cada explosão. As transferências síncronas e assíncronas representam diferentes métodos para resolver esse problema. O primeiro envolve uma comunicação entre o remetente eo receptor onde os dois concordam com o momento da transferência. Este último conta com pistas no próprio dado para indicar ao receptor como ler as informações. Um administrador de rede de computadores no trabalho em um crédito de sala de servidores: curtiscreativeiStockGetty Images Synchronous Em transferências de dados síncronas, o remetente e o receptor demoram algum tempo para se comunicar antes de fazer a troca. Esta comunicação descreve os parâmetros da troca de dados. Isso geralmente envolve o estabelecimento de qual final, remetente ou receptor, terá o controle da transferência. Aqui, as duas partes também garantem que estão usando o mesmo tempo que é, eles sabem quando cada explosão termina e outro começa. Eles também definem parâmetros para redefinir seus relógios durante a transferência para garantir que eles não se afastem do tempo acordado. Assíncrono Em transferências de esforço assíncronas ou mais quentes, o remetente e o receptor não estabelecem os parâmetros da troca de informações. Em vez disso, o remetente coloca bits extras de dados antes e depois de cada explosão que indicam quando cada explosão começa e termina. Em seguida, envia as informações, e cabe ao destinatário determinar como redefinir o relógio para coincidir com o tempo do sinal. Ao contrário das transferências síncronas, o receptor não leva tempo para se comunicar com as informações do remetente sobre o que recebeu. Benefícios e desvantagens As transferências assíncronas geralmente são mais rápidas do que as transferências síncronas. Isso ocorre porque eles não ocupam tempo antes da transferência para coordenar seus esforços. No entanto, devido a isso, mais erros tendem a ocorrer em transferências assíncronas em oposição às transferências síncronas. Se ocorrerem muitos erros, ele pode negar o tempo economizado, eliminando a etapa inicial de configuração dos parâmetros de transferência, porque o destinatário terá que tomar medidas para corrigir seus erros. As transferências assíncronas funcionam bem em situações em que a troca ocorre em um meio físico confiável, como fibra óptica e cabos coaxiais. Isso ajuda a minimizar os erros de transmissão, de modo que o tempo economizado ao renunciar ao estabelecimento de parâmetros realmente resulta em uma transferência mais rápida do ponto de vista do usuário final. As transferências síncronas funcionam bem ao usar meios de transferência menos confiáveis, como fios elétricos e sinais de rádio. Aqui, vale a pena aproveitar o tempo extra para coordenar os detalhes da transferência, pois compensa os erros cometidos pelo meio físico.
Comments
Post a Comment