Em quarto lugar, threads do processo, assíncrono síncrono, sem bloqueio impedindo a compreensão simultânea paralela

I. Antecedentes

1. Na frente alguns posts que temos de explicar um monte de conhecimento sobre o multi-threaded, e hoje preparado para falar com antes de vários conceitos fazer explicação específica, esperando para ajudá-lo, aqui vamos nós para explicar em detalhes hoje conteúdo.

2. Se você tem que explicar não entendo, por favor deixe uma mensagem, você pode se referir ao meu blog anterior para entender o conhecimento que explicar hoje. No nonsense começou a explicar hoje.

Em segundo lugar, o conceito básico

1. Processos e Tópicos

1.1 processo (Processo) :. é um conceito básico no sistema Windows, que contém um recurso necessário para executar o programa. Uma aplicação em execução é visto como um processo no sistema operativo, o processo pode incluir um ou mais segmentos. Um segmento é a unidade básica de tempo do processador do sistema operativo atribui, no processo pode ter vários segmentos executando códigos simultaneamente. Entre os processos são relativamente independentes, um processo não pode acessar os dados de outro processo (a menos que o uso de computação distribuída), o fracasso de um processo que está sendo executado não irá afectar o funcionamento de outros processos, sistemas Windows é o uso do processo do trabalho é dividido em mais de áreas separadas. O processo pode ser entendido como um programa básico da fronteira. Ele está executando uma aplicação de rotina de um processo dinâmico de execução da aplicação.

1.2 uma rosca (thread): é uma unidade de execução de base no processo, é a unidade básica de tempo da CPU do sistema operativo atribui, um processo pode conter vários segmentos, o primeiro processo de entrada da rosca realizada é considerado como o segmento principal deste processo . Passe principalmente pelos registros de CPU, pilhas de chamadas, e passe a memória local (armazenamento local de thread, TLS) da mesma. O principal registro do estado registo CPU atualmente em execução segmento, a pilha de chamadas é usado para manter essa linha para a memória e os dados, TLS é usado principalmente para informações de estado é armazenada fio.

1.3 diferença entre processos e threads: A principal diferença entre processos e threads é que eles são diferentes manejos de recursos do sistema operacional. Os processos têm espaço de endereço separado, após um processo de falha, não terá um impacto sobre outros processos no modo protegido, e o fio é apenas um processo de diferentes caminhos de execução.

Thread tem sua própria pilha e variáveis ​​locais, mas não há espaço de endereço separado entre threads para um único segmento, um segmento de morrer é equivalente a todo o dies processo, para que o programa de procedimentos multi-processo single-threaded robusto, mas no processo handover, o consumo de recursos é grande, a eficiência é pior. Mas para alguns dos requisitos ao mesmo tempo e tem que compartilhar a operação simultânea de algumas variáveis, apenas com rosca, o processo não pode ser usado.

  • Em suma, há pelo menos um programa de um processo, um processo tem pelo menos um fio.
  • Divisão de fio escalas menores do que o processo, de modo que programas multithread simultaneidade alta.
  • Além disso, o processo possui uma unidade de memória separado no processo de aplicação, e vários segmentos de memória partilhada, aumentando assim grandemente a eficiência do programa.
  • Threads no processo de implementação e o processo é diferente. Cada entrada tem um segmento separado execução, as sequências e os procedimentos realizados na saída ordem. Mas o segmento não é capaz de executar de forma independente, ele deve existir de acordo com a aplicação, oferecendo múltiplas threads de execução controlados pela aplicação.
  • A partir de um ponto de vista lógico, o que significa que uma secção de execução do programa aplicação multi-threaded podem realizar uma pluralidade de simultaneamente. Mas o sistema operacional não será visto como várias linhas múltiplas aplicações independentes para alcançar processos de programação e de gestão e alocação de recursos. Esta é uma diferença importante entre os processos e segmentos.

2. Sincronização (Sync) e assíncrona (assíncrono)

2.1 Sincronização: O chamado sincronização é emitido quando uma chamada de função, até que nenhum resultado, a chamada não retornar ou continuar a acompanhar. Em termos simples, a sincronização é um deve fazer uma coisa, como uma parte dianteira feita no fim de fazer a próxima coisa. Por exemplo: B / S envio do formulário padrão, o processo específico é: um pedido apresentado pelo cliente -> esperando o processo do servidor -> retorna processado, neste processo o cliente (browser) não pode fazer outras coisas.

2.2 Asynchronous: Asynchronous e contraste síncrona, ao emitir uma chamada de procedimento assíncrona, o chamador até que nenhum resultado, as operações subseqüentes pode prosseguir. Quando a chamada é completada, geralmente informa o chamador através do Estado, de notificação e de retorno de chamada. Para chamadas assíncronas, não chamadas retornado pelo controle de chamadas.

Durante três maneiras de informar o chamador, como segue:

  • Status: o de monitorar o estado do chamador (polling), o chamador precisa verificar novamente em intervalos regulares, seria muito ineficiente.
  • Notificação: Quando o chamador é executado, a notificação informando o chamador, sem consumir muita performance.
  • Callback: Notificação Da mesma forma, quando a execução callee for concluída, ele irá chamar a função de retorno fornecidos pelo chamador.

Por exemplo: B / S solicitação ajax modo, o processo específico é: o cliente envia pedido ajax -> processo do servidor -> processado callback cliente executado, a pedido do cliente (browser), ainda pode fazer outra coisa.

2,3 diferença síncronas e assíncronas: Em conclusão, a diferença entre síncronas e assíncronas: Após o pedido é feito, quer para aguardar os resultados, a fim de continuar a executar outras operações.

3. bloqueio e sem bloqueio: bloqueio e não-bloqueando esses dois conceitos e procedimentos (thread) para aguardar estado notificação de mensagem quando (não importa síncrona ou assíncrona) relacionados. Esse é o principal estado de bloqueio e sem bloqueio quando o ângulo do programa (thread) para aguardar a notificação de mensagem.

Bloqueio e preocupação sem bloqueio é o estado do programa enquanto aguarda o resultado da chamada (a mensagem, o valor de retorno) de.

Bloqueio de chamadas refere-se os resultados antes da chamada retorna, o fio de corrente é suspenso. Apenas o segmento de chamada não retornar até após o resultado.

Antes de chamada sem bloqueio refere-se não obter os resultados imediatamente, a chamada não bloqueia o segmento atual.

4. Paralelamente Concurrent

4.1 Concorrência: o sistema operacional, refere-se a um período de tempo iniciou vários programas estão na corrida para ser executado entre acabado e esses programas estão em execução no mesmo processador, mas a qualquer momento um ponto apenas um programa em execução no processador.

Quando mais de um segmento para cada segmento em operação, se o sistema é apenas uma CPU, então ele simplesmente não podem ser verdadeiras ao mesmo tempo mais de um segmento, ele só pode tempo de CPU é dividido em vários períodos, então o período de tempo alocado executar, num período do código do fio está em execução, o outro fio está num estado suspenso. . Desta forma, chamamos simultânea (concorrente).

4.2 paralelo: quando o sistema tiver mais de uma CPU, então é possível operar o fio não concorrente. Quando um CPU executa um fio, a outra CPU pode executar outro segmento, dois threads e não aproveitar os recursos da CPU, podem ser realizados simultaneamente, chamamos tal forma paralela (Parallel)

4,3 simultaneidade e paralelismo diferença:

  • Você comer metade de uma refeição, telefone, e você só tem que pegar depois de comer, o que significa que você não suporte simultâneo não suporte paralelo.
  • Você comer metade de uma refeição, telefone, e você pegar o telefone parou, então continuou depois de uma refeição, ele mostra seu apoio para a simultaneidade.
  • Você comer metade de uma refeição, telefone, e seu telefone ao comer lado, ele mostra seu apoio paralelo.

A chave é que você tem a capacidade de lidar simultaneamente múltiplas tarefas, não necessariamente ao mesmo tempo. chaveta é que você tem a capacidade de lidar com várias tarefas.

Então, eu acho que eles são o ponto mais crucial é: se é "ao mesmo tempo."

Em terceiro lugar, assíncrona e diferença multi-threaded? (artigos) Princípio

1. assíncronas e multi-threaded Qual é a diferença?

Na verdade, o objetivo é assíncrona, e multi-threading é um método para alcançar este objectivo. média assíncrona, depois de um inicia uma ação (geralmente mais demorado operação, sem operação demorada não é necessário o assíncrono), continuamos a lidar com a sua própria coisa de auto-serviço, faça espera não seco para este demorada operação volta.

Semelhanças e diferenças 2. multithreading e operações assíncronas

Ambos multithreading e operações assíncronas pode atingir o objectivo de evitar segmento de chamada é bloqueada, melhorando assim a capacidade de resposta do software. Às vezes até acho que multithreading e operações assíncronas são conceitos equivalentes. No entanto, multi-threading e operações assíncronas ainda existem algumas diferenças. Estas diferenças em temporização causadas pelo uso indiscriminado de segmentos múltiplos e do funcionamento assíncrono de.

3. A natureza assíncrona da operação

Todos os programas acabará por ser executado pelo hardware do computador, de modo a fim de compreender melhor a natureza das operações assíncronas, precisamos olhar para o seu hardware é baseado. Familiarizado com amigos DMA de hardware de computador, certamente, não é estranho à palavra, disco rígido, CD-ROM especificações técnicas têm modo de indicadores DMA clara, de fato, placa de rede, placa de som, placa de vídeo é também uma função DMA.

DMA é meio acesso direto à memória, ou seja, o hardware tem uma função DMA de tempo e memória no intercâmbio de dados não pode consumir recursos da CPU. Enquanto a CPU envia um comando no início da transmissão de dados, começou seu próprio hardware e memória para trocar dados, após a transferência é gatilhos de hardware completos uma interrupção para notificar a operação for concluída. Estes não precisa consumir tempo CPU base de hardware operações E / S é a operação assíncrona. Mesmo num único processo, como DOS (conceito de processo e sem fio) do sistema também pode dar início a operação de DMA assíncrona.

4. A natureza do fio

Tópico não é uma função de hardware de computador, mas uma função lógica do sistema operacional, o fio é essencialmente o processo do código para uma corrida ao mesmo tempo, de modo que o segmento precisa investir operam recursos da CPU do sistema para executar e agendamento.

As vantagens e desvantagens da operação assíncrona

Porque operação assíncrona sem carga tópicos adicionais, e usa uma abordagem chamada de retorno ao tratamento, no bem concebido, o condutor pode não ter que usar variáveis ​​compartilhadas (se não completamente não, pelo menos você pode reduzir o número de variáveis ​​compartilhadas), reduziu mortos bloquear possível. Claro, a operação assíncrona não é perfeito. Quanto maior a complexidade da escrita operação assíncrona, o programa usado principalmente caminho de retorno de chamada para lidar com a maneira de pensar das pessoas comuns é um pouco diferente, e difícil de depurar.

6. As vantagens e desvantagens de multi-roscada

Obviamente as vantagens do multi-threading, manipulador de fio ainda é a ordem de execução, de acordo com os hábitos da mente das pessoas comuns, de modo programação é simples. No entanto, as desvantagens multi-threaded também são óbvias, uma carga adicional de mudanças de contexto que usar segmentos (abuso) vai dar ao sistema. E variáveis ​​compartilhadas entre threads pode levar a um impasse.

Assíncrona e multi-threaded, a partir do ponto de vista relação dialética, assíncrona e multi-enfiar não é uma relação de igualdade, a finalidade é assíncrona, multi-threaded mas que têm um meio para alcançar assíncrona. O que é Asynchronous: Asynchronous é devolvido quando uma solicitação de chamada é enviada para o chamador, mas o chamador sem esperar por seus resultados. A tecnologia multi-threading assíncrona pode ser usado ou outro processo está a ser tratado. Extensão: multithreading conhecimento lista sistema de base

Em quarto lugar, assíncrono, diferença de multi-threaded e paralelo

Exemplo: Suponhamos agora que a cidade é de apenas um trem, um condutor, necessidade de pensar um minuto e, em seguida, decidir comprar um bilhete de comboio que cada passageiro após consulta condutor.

1. Asynchronous: Após consulta pessoas que compram bilhetes, necessidade de pensar cerca de um minuto, imediatamente afastar, mas não se alinham novamente, quando você pode pensar claramente falar com o condutor ir imediatamente comprar um bilhete. No pensamento da pessoa de pé ao lado da hora, naquela época as pessoas correram para comprar. Desta vez, a equipe é muito rápido em movimento, sem obstrução, para maximizar a eficiência do condutor.

2. Multithreading: Estação n janelas abertas (mas ainda apenas um bilhete), enquanto a parte externa da linha n equipes, após a pergunta pergunta de resposta condutor, cavalo levantar a próxima janela, em seguida, continuar a girar para a próxima janela .... . as pessoas a decidir qual janela é bom, o condutor passou voando comprado para ele. Desta vez, os passageiros é relativamente simples, mas se a equipe estava pensando por um longo tempo emaranhado atrás das pessoas na tragédia.

3. paralelo: Cópias n estação de comboios, com as mesmas folhas de tempos vendendo, bilhetes bastante reforçada. Nós também pode treinar estação que algumas pessoas que foi para comprar um bilhete.

4. Visível: Em apenas uma estação de trem, e apenas um condutor de casos, vendeu uma venda, em seguida, vai levar a um desperdício de recursos, ineficiência, a equipe preso, é difícil avançar. maneira de resolver toda a equipe não se move, o problema de baixas vendas de ingressos 1,2-otimizado. Mas o aumento da estação ferroviária, aumentar a janela, é uma boa maneira de aumentar o condutor. Extensão: multithreading conhecimento lista sistema de base

5. Conclusão:

1. Na verdade, assíncrona e multi-threaded eficiência quase, mas não muitas janelas abertas, por exemplo três, enquanto há um monte de pessoas estão indo para gastar 5 minutos em vez de um minuto para ir quando emaranhada, a eficiência de multi-threaded é realmente menor do que assíncrono, porque o condutor ou normalmente encontrados três vezes, enquanto preso no emaranhado que não pode fila para os bilhetes.

2. Estes dois conceitos utilizados para contrastar um pouco impróprio, porque eles não são um conceito, ou com a finalidade de assíncrona multi-threaded assíncrona, multi-threaded deve ser um meio para alcançar. sincronização Asynchronous deve falar para comparar meu filho.

3. Multithreading é relativamente simples, mas requer uma janela adicional, aumento de custos, e este foi o pior condutor sob php apache semelhante, e nó. Os js Javascript próximo relacionamento, é uma multi-threaded, mas é bloqueada, o outro é um único roscados assíncrono não-bloqueio. programa php mais de acordo com o pensamento convencional, mas mais memória custo, nó. js sem bloqueio, com menos recursos será capaz de realizar a mesma tarefa, mas a programação confuso.

4. Em paralelo, enquanto que a utilização semelhante de cada núcleo de uma CPU de vários núcleos de calcular. Simultâneos ser dividido em pseudo complicado, muito complicado. O primeiro, por exemplo, o processador de núcleo único concorrente, que se refere ao desenvolvimento simultâneo de vários núcleos processadores.

5. A melhor forma de computação paralela e computação assíncrona em cada CPU, para que possa tirar o máximo proveito de cada núcleo. Mas os requisitos de programação são muito altos é muito alto, se não de computação intensiva, como o grande método de elementos finitos (uso mais concorrente), ou o acesso ao servidor simultaneamente milhares de processos (ou uso mais assíncrona multi-threading), ou honestamente da maneira tradicional, afinal de contas, a quantidade de procedimentos de rotina de computação de hardware agora, o problema não é grande. Extensão: multithreading conhecimento lista sistema de base

Em quinto lugar, impedindo o bloqueio não-diferença síncrona e assíncrona? (Parte História)

Compreender bloqueio síncrono, sem bloqueio síncrono, bloqueio assíncrona, bloqueando assíncrona, assíncrona sem bloqueio

mecanismo de notificação de mensagem síncrona / assíncrona está em causa, e bloqueando preocupação / non-blocking é o estado do programa (thread) para aguardar notificação de mensagem.

Xiao Ming para baixar arquivos analogia, esses dois grupos focais para ilustrar este conceito novo, na esperança de promover um melhor entendimento de todos.

1. bloqueio síncrono: Xiao Ming foi olhando de download da barra de progresso para 100% do tempo que ela seja concluída.

  • A sincronização é refletida em: Aguarde até que o download estiver completo de notificação;
  • Bloqueio reflete em: Aguarde o download para completar o processo de notificação, você não pode fazer outras tarefas de processamento;

2. sincronização sem bloqueio: Xiao Ming depois de submeter tarefas de download para fazer o contrário, de vez em quando ir para olhar para a barra de progresso, viu uma completa 100%.

  • A sincronização é refletida em: Aguarde até que o download estiver completo de notificação, mas que esteja em;
  • Sem bloqueio reflete em: Aguarde o download para completar o processo de notificação, uma tarefa para fazer o contrário, mas, ocasionalmente, olhar para a barra de progresso; [Xiaoming necessidade de alternar entre tarefas, preocupado com o progresso do download]

3. bloqueio Asynchronous: Xiao Ming mudou a função de notificação de download conclusão do software, o download está completo no som "ding". Mas Xiao Ming foi ainda à espera de "ding" som (parece bobo, não é).

  • Asynchronous reflecte: o download é "ding" notificação sonora completa;
  • Bloqueio reflete em: em breve espera aviso para o download para concluir o processo "mordida", você não pode fazer outras tarefas de processamento;

4. sem bloqueio assíncrono: ainda software de download que irá "ding" som, e Xiao Ming após a apresentação de uma tarefa de download para fazer o contrário, para ouvir o "ding" som de saber completo.

  • Asynchronous reflecte: o download é "ding" notificação sonora completa;
  • Sem bloqueio reflete em: Aguarde o download para completar o processo de notificação de som "ding", a tarefa de fazer o contrário, e só precisa receber o "ding" som para notificar; [download de tarefas de processamento de software, Xiao Ming para lidar com outras tarefas, sem a atenção para o progresso, simplesmente receber "ding" software notificações sonoras para]

Em outras palavras, síncrona / assíncrona é o caminho (mecanismo) "Baixar mensagem Complete" notificação e bloqueando / non-blocking está em um estado de espera "mensagem de download em conclusão" processo de notificação (não pode fazer outras tarefas), em diferentes cenário, síncrona / assíncrona, quatro combinações de bloqueio / não-bloqueio são aplicadas.

Então, para resumir, mecanismos síncronos e assíncronos só estão preocupados com a forma como a notificação de mensagem, e bloqueio e sem bloqueio preocupação é o estado de espera de notificação de mensagem. Em outras palavras, no caso sincronizado pela pessoa a processar a mensagem si esperando para ver se a mensagem é acionado, eo caso foi desencadeada por um mecanismo assíncrono notificação para lidar com essas mensagens, por isso, um mecanismo assíncrono, as mensagens são processadas e o mecanismo de gatilho entre precisará preencher uma conexão:

No caso de Bob, esta ponte é o software "ding" som.

Síncrona / assíncrona e de bloqueio / não-bloqueamento

Uma forma de bloqueio síncrono

Eficiência é a mais baixa,

Tomemos o exemplo acima, é que você se concentrar espera para o download estiver concluído, não fazer qualquer outra coisa.

programa real: leia O_NONBLOCK não está definido para a operação de bandeira fd / escrita;

2 forma bloqueio assíncrono

operação assíncrona pode ser bloqueado para viver, mas não é bloqueado durante o processamento de uma mensagem, mas a mensagem é bloqueada enquanto aguarda notificação.

Por exemplo, selecionar uma função, se aprovada no último parâmetro de tempo limite é NULL, em seguida, o evento não é uma preocupação se acionados, o programa foi bloqueado no seleto chamada este lugar.

3 forma de não-bloqueio síncrono

Na verdade ineficiente,

Imagine que, enquanto você fazer outras coisas enquanto ainda não precisa de olhar para cima o download estiver concluído, se fazendo outra coisa e observar a conclusão do local de download como dois procedimentos operacionais, então este programa precisa de dois comportamentos diferentes mudança e para trás entre, imaginar eficácia é baixa.

Muitas pessoas vão escrever bloqueando operações de leitura / gravação, mas não se esqueça que você pode definir bandeira O_NONBLOCK sobre fd, de modo que você pode sincronizar a operação torna-se um non-blocking.

4 sem bloqueio forma assíncrona

Maior eficiência,

Porque você esperar o download é (garçons) completo coisa, e você percebe é o computador (o mecanismo de gatilho mensagem) coisas, o programa não muda e para trás em duas operações diferentes.

Até agora, sobre o segmento do processo, assíncrono síncrono, sem bloqueio bloqueando paralelo concorrente tem falado sobre isso, fala-se do mau lugar agradar chefes disse. Obrigado, irmão mais velho é também o artigo on-line me ajudou a entender esses conceitos.

Em sexto lugar, a extremidade (mais do que uma referência para o grande deus do artigo)

Sempre mantenha a fé!!!

Publicado 122 artigos originais · ganhou elogios 64 · vê 50000 +

Acho que você gosta

Origin blog.csdn.net/chenmingxu438521/article/details/104200208
Recomendado
Clasificación