Os computadores com mais de 1 processadores
Essa característica já é estudada nos cursos de sistemas operacionais há tempos, até porque quando só havia um núcleo disponível (e isso ainda acontece em diversas plataformas) as aplicações concorrem também pelo uso do processador. A parte interessante é que este problema, típico da área de sistemas, foi trazido para a área de aplicações inicialmente quando tivemos acesso à criação de novos processos (via fork por exemplo) e à threads. Neste último caso, as novas linguagens já trazem suporte ao trabalho com threads de forma nativa o que ajudou muito a difundir seu uso, no entanto talvez não tenhamos dado devida atenção ao domínio das técnicas para usar esse tipo de ferramenta.
Existe muito material disponível sobre threads, mas por hora podemos entender como sendo as linhas de execução de um programa, ou seja, mais de uma tarefa do próprio programa acontece (ou tenta acontecer) ao mesmo tempo. Com isso temos que nos preocupar com os problemas de concorrência, originalmente da área de sistemas, dentro da nossa aplicação.
Para isso vale a pena rever os conceitos ensinados em sistemas operacionais referentes a: * Condições de corrida (race conditions) – dois ou mais