/ / O que acontece com um segmento quando um up é feito em seu mutex? - multithreading, thread-safety, mutex, seção crítica

O que acontece com um thread quando um up é feito em seu mutex? - multithreading, thread-safety, mutex, seção crítica

Mutexes são usados ​​para proteger seções críticas. Digamos que um down já tenha sido feito em um mutex, e enquanto o thread que fez isso está no CS, 10 outros threads estão logo atrás dele e fazem um down no mutex, colocando-se para dormir. Quando o primeiro thread sai da seção crítica e faz um up no mutex, todos os 10 threads acordam e apenas retomam o que eles estavam prestes a fazer, ou seja, entrar na seção crítica? Não significaria então que todos os 10 poderiam acabar na crítica seção ao mesmo tempo?

Respostas:

1 para resposta № 1

Não somente 1 thread vai acordar e se apropriar do mutex. O resto deles permanecerá dormindo. Qual segmento é aquele que acorda é geralmente não-determinístico.

O acima é uma generalização e os detalhes da implementação serão diferentes em cada sistema. Por exemplo, em Java compare Objeto # notify () e Objeto # notifyAll ().