【问题标题】:How to create multiple threads in Windows azure worker role如何在 Windows azure worker 角色中创建多个线程
【发布时间】:2011-02-18 12:15:42
【问题描述】:

我想在一个工作人员角色中执行多项操作。如何创建worker角色的线程?

【问题讨论】:

    标签: .net azure azure-worker-roles


    【解决方案1】:

    您可以在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);
                }
            }
        }
    

    【讨论】:

    • 您能否为您声称 Azure 将在 30 秒后终止线程提供参考?在this Microsoft example,他们在 Role.Run() 中创建线程。
    • 这可能是我的环境中存在的一个问题,导致未处理的异常导致我的线程崩溃。
    【解决方案2】:

    简而言之,它与任何其他控制台应用程序没有什么不同。

    【讨论】:

    • 其实这是假的。在 Azure Worker 角色中使用 Task.Factory 或 Thread.Start 创建线程是不好的,因为 Azure 将在大约 30 秒后终止线程。
    • Inge,对不起,但我很确定你错了。在 Lokad,我们已经在 Azure 上投入生产 2 年了,底层框架 Lokad.Cloud (code.google.com/p/lokad-cloud) 广泛使用 Thread.Start 来构建新线程。
    • 是的,Azure 计算本身不会杀死任何线程。然而,长时间运行的 SQL Azure 连接很可能会被终止。
    【解决方案3】:

    两个不同的例子:

    【讨论】:

    猜你喜欢
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多