Contenção de Thread Ruby: Não é uma Guerra

2025-02-03

Por muito tempo, eu entendi mal a "contenção de thread" em Ruby. Não é uma luta caótica; em vez disso, as threads Ruby fazem fila educadamente para o Global VM Lock (GVL). Cada thread recebe o GVL, executa o código e, em seguida, o libera ou é preemptado após um certo tempo (o quantum da thread, com padrão de 100 ms). Isso acontece quando uma thread executa I/O ou executa por mais tempo que seu quantum. Entender isso é crucial para otimizar aplicativos multithread, especialmente para evitar que threads vinculados à CPU bloqueiem threads vinculados a E/S, levando a um aumento na latência de cauda. Diminuir a prioridade das threads vinculadas à CPU ou reduzir o quantum da thread pode ajudar, mas o menor intervalo é de 10 ms.

Desenvolvimento