Я хочу выполнять несколько операций в одной рабочей роли. Как создавать потоки в рабочей роли?
Как создать несколько потоков в рабочей роли Windows Azure
Ответы (3)
Вы можете добавить несколько рабочих процессов в WorkerRole::OnStart()
, как описано здесь http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/running-multiple-threads-on-windows.html
public class WorkerRole : ThreadedRoleEntryPoint
{
public override void Run()
{
// This is a sample worker implementation. Replace with your logic.
Trace.WriteLine("Worker Role entry point called", "Information");
base.Run();
}
public override bool OnStart()
{
List<WorkerEntryPoint> workers = new List<WorkerEntryPoint>();
workers.Add(new ImageSizer());
workers.Add(new ImageSizer());
workers.Add(new ImageSizer());
workers.Add(new HouseCleaner());
workers.Add(new TurkHandler());
workers.Add(new Crawler());
workers.Add(new Crawler());
workers.Add(new Crawler());
workers.Add(new Gardener());
workers.Add(new Striker());
return base.OnStart(workers.ToArray());
}
}
internal class Striker : WorkerEntryPoint
{
public override void Run()
{
while (true)
{
// Do Some Work
Thread.Sleep(100);
}
}
}
person
Community
schedule
17.06.2011
Можете ли вы предоставить ссылку на ваше утверждение о том, что Azure убьет потоки через 30 секунд? В этом примере Microsoft они создают потоки в Role.Run() .
- person Oliver Bock; 23.06.2011
Это может быть проблема, связанная с моей средой, которая вызывает необработанное исключение, приводящее к сбою моих потоков.
- person ; 23.06.2011
В двух словах, это ничем не отличается от любого другого консольного приложения.
person
BrentDaCodeMonkey
schedule
18.02.2011
На самом деле это неверно. Создание потоков с использованием Task.Factory или Thread.Start в рабочей роли Azure — это плохо, так как Azure уничтожит поток примерно через 30 секунд.
- person ; 17.06.2011
Инге, извини, но я уверен, что ты не прав. В Lokad уже 2 года мы работаем на Azure и Lokad.Cloud (code .google.com/p/lokad-cloud), базовая платформа, широко использует
Thread.Start
для создания новых потоков.
- person Joannes Vermorel; 23.06.2011
Да, и вычислительная мощность Azure по своей сути не убивает ни одного потока. Однако длительные соединения SQL Azure вполне могут быть уничтожены.
- person BrentDaCodeMonkey; 14.07.2011
Два разных примера, которые делают это:
http://msdn.microsoft.com/en-us/library/ff803372.aspx (прокрутите до "Внутри реализации"
http://msdn.microsoft.com/en-us/library/ff966485.aspx (прокрутите до «внутри реализации»). В этом примере используется TPL, доступный в .NET 4.0, для планирования параллельных задач.
person
Eugenio Pace
schedule
23.02.2011
Обновленная ссылка будет следующей: msdn.microsoft.com/en-us/library. /ff803365.aspx (5 — выполнение фоновых задач)
- person csg; 05.02.2014