Sobes.tech
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.