O que significa "assíncrono" nesses casos?

0

Eu pedi o que "assíncrono" significa há algum tempo para interrupções . Agora eu tenho a mesma pergunta, mas para executar comandos shell e para cancelar threads.

Do manual do Bash

If a command is terminated by the control operator &, the shell executes the command asynchronously in a subshell.

De Operating System Concepts, de Abraham Silberschatz, et al,

A thread that is to be canceled is often referred to as the target thread. Cancellation of a target thread may occur in two different scenarios:

  1. Asynchronous cancellation. One thread immediately terminates the target thread.

  2. Deferred cancellation. The target thread periodically checks whether it should terminate, allowing it an opportunity to terminate itself in an orderly fashion.

Eu queria saber o que "assíncrono" significa nos dois casos acima? Tem o mesmo significado nos dois casos?

As definições do Google se aplicam aos dois casos acima?:

adjective: asynchronous

  1. (of two or more objects or events) not existing or happening at the same time.

  2. Computing, Telecommunications

    of or requiring a form of computer control timing protocol in which a specific operation begins upon receipt of an indication (signal) that the preceding operation has been completed.

As duas definições do Google parecem

  • ao contrário do operador "assíncrono" & ,

  • e não relacionado ao cancelamento "assíncrono" de threads?

Se a segunda definição se aplica aos dois casos acima, quais são "uma operação específica" e "a operação anterior" em cada caso?

Obrigado.

    
por Tim 30.03.2018 / 22:34

1 resposta

1

O significado de "assíncrono" é diferente em todos esses casos.

No caso de shell, & executa um comando de forma assíncrona, o que significa que o shell recupera o controle assim que o comando é iniciado e o comando é executado em segundo plano. O shell processará o próximo comando, se houver um, ou o controle de retorno para o usuário ou o processo pai, se não houver.

No caso de encadeamento, o cancelamento assíncrono significa que o encadeamento que está sendo cancelado é interrompido imediatamente, geralmente de uma maneira que é controlada somente de fora do encadeamento, isto é, do encadeamento de cancelamento. A definição que você encontrou não é familiar para mim; Tenho a tendência de pensar no cancelamento assíncrono, conforme descrito na definição POSIX da função pthread_cancel , < em> ie o cancelamento é assíncrono porque a função de cancelamento devolve o controle ao chamador imediatamente, e o cancelamento continua em paralelo no segmento de destino.

Na primeira definição que você encontrou usando o Google, assíncrona refere-se à natureza da comunicação: a comunicação assíncrona ocorre quando as partes não precisam estar presentes simultaneamente. Um exemplo de comunicação assíncrona é o e-mail.

A segunda definição que você encontrou usando o Google parece referir-se à programação assíncrona, por exemplo, programação orientada a retorno de chamada. Em vez de definir seqüências de operações procedimentalmente e bloquear operações, você descreve eventos e seqüências de operações que são executadas quando os eventos ocorrem. A definição assíncrona que você cita parece referir-se a sequências de operações que são executadas quando outra sequência de operações é concluída (consulte ListenableFuture descrição para uma implementação deste). Imagine que você queira recuperar algumas informações de um site e processá-las; em estilo típico de procedimento, você usaria algo como curl para recuperar os dados do site, aguardar a conclusão e, em seguida, processá-los. No estilo assíncrono, você descreveria o que deseja fazer com os dados, depois dispararia a recuperação, com essa descrição, e o processamento aconteceria assim que os dados se tornassem disponíveis, enquanto você poderia fazer outra coisa. Aqui, a "operação específica" seria o processamento que você deseja realizar, e a "operação anterior" seria a recuperação de dados.

    
por 31.03.2018 / 10:41