Middle+
Que problemas conhece relacionados com a paralelização?
sobes.tech IA
Resposta da IA
- Condição de corrida (Race condition): Vários threads/processos acedem e modificam dados partilhados simultaneamente, levando a resultados imprevisíveis.
- Deadlock (Deadlock): Dois ou mais threads esperam por recursos ocupados por outros, causando uma paragem do sistema.
- Fome (Starvation): Um thread de baixa prioridade não consegue aceder aos recursos, esperando indefinidamente.
- Custos de sincronização: O uso de bloqueios e outras primitivas de sincronização requer tempo e recursos, reduzindo o desempenho geral.
- Complexidade de depuração: Depurar código paralelo é difícil devido à ordem de execução imprevisível dos threads e à dificuldade de reproduzir problemas.
- Não determinismo: O resultado da execução do programa pode variar a cada execução devido à ordem diferente dos threads.
- Escalabilidade: Incapacidade de escalar o desempenho proporcionalmente ao número de núcleos devido a limitações no algoritmo ou arquitetura.
- Falsa partilha de cache (False sharing): Vários threads acedem simultaneamente a dados diferentes que estão na mesma linha de cache, causando atualizações constantes.
Exemplo de condição de corrida:
class Counter {
private int count = 0;
public void increment() {
count++;
}
public int getCount() {
return count;
}
}
// Se dois threads chamarem increment() simultaneamente sem sincronização,
// o valor final de count pode ser menor do que o esperado.