Sfondo
Ok, quindi supponiamo di avere una priorità alta ( ThreadPriority.Highest
) thread t
che deve inserire un'area critica per consumare alcuni dati. Userò il seguente snippet di codice per illustrare il mio punto.
// create a consumer thread
t = new Thread(() =>
{
Monitor.Enter(myLock);
// consume data
Monitor.Exit(myLock);
});
t.Name = "Data Consumer";
t.Priority = ThreadPriority.Highest;
t.Start();
Nell'esempio sopra, il thread tenta di entrare nella regione per consumare i dati (quando il blocco è disponibile).
Domanda
Ci sono delle implicazioni sul rendimento che devo sapere quando un thread con la massima priorità sta entrando nella regione v.s. un thread con priorità più bassa che tenta di entrare nella regione?
Per esempio, supponiamo che il thread con la massima priorità non sia in grado di ottenere myLock
perché c'è un altro thread occupato con la regione. Il thread con ThreadPriority.Highest
consuma molta più CPU quando provi ad entrare nella regione (rispetto a un thread con priorità più bassa)?