Concorrência

A simultaneidade permite que uma unidade de processamento central (CPU) execute várias tarefas simultaneamente durante um determinado período de tempo. Essas tarefas ou processos não dependem uns dos outros. A simultaneidade facilita a transição rápida entre diferentes aplicativos em um computador, por exemplo; parece que diferentes processos estão sendo executados exatamente ao mesmo tempo. Mas em vez disso, a CPU está alternando rapidamente entre threads, que são segmentos minúsculos de processos de computação. Tecnicamente, uma CPU pode executar apenas um thread por vez, mas a simultaneidade permite que ela alterne entre as tarefas para que pareçam estar executando simultaneamente. Isso é chamado de multithreading.

A simultaneidade permite que os programas de computador sejam executados adequadamente, executando tarefas diferentes em uma CPU durante o mesmo período de tempo geral, mas essas tarefas não dependem todas umas das outras, nem são paralelas. Em contraste, o paralelismo realmente executa as tarefas totalmente ao mesmo tempo, em vez de mover-se rapidamente entre elas. Um benefício da tecnologia multi-core é que ela permite que uma única CPU execute o processamento paralelo.

A simultaneidade dá a um computador com apenas uma CPU mais flexibilidade, permitindo que ele decida quando e por quanto tempo trabalhar nas tarefas. A simultaneidade também difere de processos ou programação sequenciais: os processos sequenciais são concluídos um de cada vez, enquanto os concorrentes não precisam ser concluídos antes de outro começar: eles podem ser divididos da maneira que for mais eficaz.

A simultaneidade pode ser aplicada a sistemas de computador e linguagens de programação. As linguagens de programação que usam simultaneidade incluem Java, Python, Rust e Go.