У меня есть рабочий поток на моем сервере сокетов. Когда я устанавливаю самый низкий приоритет, все работает, но оно медленное. Когда я устанавливаю приоритет Normal, он намного быстрее, но когда нет работы, и в цикле while проверяется, что элемент должен быть добавлен в список очередей, он все еще запускает cpu-usuage, и моя VM замедляется. Я новичок в управлении потоками. Как использовать Mutex или Monitor, чтобы сделать поток спящим или ждать, пока в очереди не будет работы.C# Thread Sleep или Wait до работы MUTEX или MONITOR
m_workerThread = new Thread(new ThreadStart(ProcessQueueLogs));
m_workerThread.Priority = ThreadPriority.Lowest;
m_workerThread.Start();
private void ProcessQueueLogs()
{
try
{
while (!m_stopServer)
{
if (m_socketListenersList.Count > 0)
{
//Logger.WiteLog("ltsserver getting socketlistener from queue");
// get the first socket in the list
LTSSocketListener workerSocket = RequestQueue(null, false);
//LTSSocketListener workerSocket = (LTSSocketListener)m_socketListenersList[0];
if (workerSocket != null)
{
// start the socket to process the request
workerSocket.StartProcessingRequest();
// close the socket
workerSocket.CloseSocketListener();
//Logger.WriteLog("ltsserver closing socketlistener");
// remove of the socket queue list
RequestQueue(workerSocket, false);
//m_socketListenersList.Remove(workerSocket);
}
}
}
}
catch (SocketException e)
{
EventLog.WriteEntry(m_eventSource, e.Message.ToString());
EventLog.WriteEntry(m_eventSource, e.Message.ToString(), EventLogEntryType.Error, 234);
}
}
Любая помощь приветствуется.