Приветствую.
У меня существует процесс допустим ClientThread1 который в случае необходимости запускает WorkThread.
WorkThread выполняет некоторый объем работы которая в большенстве случаев превышает объем работы необходимый для продолжения работы ClientThread1.
Как ClientThread1 узнать что можно продолжать работать?
Единственное что мне пришло в голову это написать код вроде
while(true){
lock(data){
if(data.success){
continue;
}
}
Sleep(10);
}
В данном решении приложение может простаивать до 10мс да еще и lock не быстрая штука.
Хотя вроде это не относится к делу, но хочу заметить что один или несколько WorkThread разбирающих очередь мне не подходят из за особенностей поставленных задач.
Подскажите есть ли более верные способы решения этой задачи.
Здравствуйте, DnAp, Вы писали:
DA>Хотя вроде это не относится к делу, но хочу заметить что один или несколько WorkThread разбирающих очередь мне не подходят из за особенностей поставленных задач.
DA>Подскажите есть ли более верные способы решения этой задачи.
http://msdn.microsoft.com/ru-ru/library/system.threading.manualresetevent.aspx ?
void ClientThread()
{
Task t = Task.Factory.StartNew(CalculateSomething);
signal.WaitOne();
}
ManualResetEvent signal = new ManualResetEvent(false);
List<double> data = new List<double>();
Random r = new Random();
void CalculateSomething()
{
while(true)
{
data.Add(r.NextDouble());
Thread.Sleep(1000);
if (data.Count == 5)
signal.Set();
}
}
Здравствуйте, ZloeBablo.
Спасибо. то что нужно