Con TryEnter si el recurso está libre se bloquea, si no, se espera el tiempo especificado. En caso de que el tiempo expire y el recurso siga bloquedo se devuelve False para poder continuar con otros procesos si es preferible a esperar por conseguir el recurso compartido.
public bool WaitToAddElement(object qValue, int waitTime)
{
if(!Monitor.TryEnter(m_inputQueue,waitTime))
return false;
m_inputQueue.Enqueue(qValue);
Monitor.Exit(m_inputQueue);
return true;
}
En cambio, con Enter, el hilo se bloquearía sin condiciones si el recurso está siendo usado por otro hilo.
public void AddElement(object qValue)
{
Monitor.Enter(m_inputQueue);
m_inputQueue.Enqueue(qValue);
Monitor.Exit(m_inputQueue);
}
No hay comentarios:
Publicar un comentario