O que é thread

Linha ou Encadeamento de execução (em inglês: Thread), é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrencialmente. O suporte à thread é fornecido pelo próprio sistema operacional no caso da linha de execução ao nível do núcleo (em inglês: Kernel-Level Thread (KLT)), ou implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT). Uma thread permite, por exemplo, que o usuário de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.

O que é mutex

Exclusão mútua (também conhecida pelo acrônimo mutex para mutual exclusion, o termo em inglês) é uma técnica usada em programação concorrente para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado, acesso esse denominado por seção crítica.

Threads no QMMP

O qmmp, como um tocador de musica, precisa de várias linhas de execução para realizar tarefas simultaneas. Uma dessas linhas de execuções se encarrega de tocar os arquivos de audio, que pode ser parada, pausada ou mutada por outra thread alterando uma variavel que sinaliza se o audio esta parado ou não.

Outra linha de execução cuida dos efeitos que podem ser aplicados no audio, que tambem pode ser parado, pausada ou mutada da mesma forma que a primeira thread.

Quando ocorre a alteração das variáveis de estado (pausado, parado. etc), as mesmas são bloqueadas com o uso de um mutex.

existe ainda uma thread que recolhe os dados do arquivo de audio. sem contar na thread da interface gráfica, que é a thread que possibilita alterar as variáveis de estado.