Como pensar em diferentes realidades
Advanced Technology Group (ATG)
Publicado em: agosto de 2006
Atualizado: Junho 2010
Introdução
Durante anos, o desempenho dos processadores aumentou de forma constante, e jogos e outros programas têm colhido os benefícios deste poder cada vez maior sem ter que fazer nada de especial.
As regras mudaram. O desempenho dos núcleos de um processador está a aumentar muito lentamente, se em tudo. No entanto, o poder computacional disponível em um computador típico ou consola continua a crescer. A diferença é que a maior parte deste ganho de desempenho agora vem de ter múltiplos núcleos de processamento em uma única máquina, muitas vezes em um único chip. O Xbox 360 CPU possui três núcleos de processador em um único chip, e cerca de 70 por cento de processadores para PC vendidos em 2006 será multi-core.
Os aumentos no poder de processamento disponível são tão dramática como no passado, mas agora os desenvolvedores tem que escrever código multithreaded, a fim de usar este poder. Programação multi-threaded traz novo design e os desafios de programação. Este artigo dá alguns conselhos sobre como começar com programação multithreaded.
A Importância de um bom design
Concepção do programa Bom multithreaded é fundamental, mas pode ser muito difícil. Se você por acaso passar os seus sistemas de jogos importantes em tópicos diferentes, você provavelmente vai descobrir que cada segmento passa a maior parte do seu tempo de espera nos outros segmentos. Este tipo de projeto leva a uma maior complexidade e esforço de depuração significativa, com praticamente nenhum ganho de desempenho.
Toda vez que os segmentos têm de sincronizar ou compartilhar dados há o potencial para a corrupção de dados, sobrecarga de sincronização, deadlocks, e complexidade. Portanto, seu projeto multithreaded precisa documentar claramente cada sincronização e ponto de comunicação, e deverá minimizar tais pontos, tanto quanto possível. Onde