正确使用并行处理

时间:2013-12-27 14:36:23

标签: c# image-processing parallel-processing

我有一个C#桌面应用程序框架4.5。

目前我正在使用系统,计时器将图像上传到我的网络服务器(尽可能快速有效。

这就是代码:

    void tmrFeeder_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        try
        {
            tmrFeeder.Stop();
            MotionFrame motion = GetNextUpload();
            if (motion != null && motion.Frame != null)
            {
                request.UploadMotion(motion.Frame, Shared.Alias, motion.camIndex, motion.MessageLog);
            }
        }
        catch (Exception ex)
        {
            evError();
        }
        finally
        {
            if (!stop)
            {
                tmrFeeder.Start();
            }
        }
    }

我想知道如果我有一个多核处理器,我是否可以利用并行处理。

但在上面的场景中,上传图像的连续顺序至关重要。

所以,我对并行任务的理解会破坏我/我的规则。

然而,由于TPL告诉我它以最有效的方式利用处理器的硬件架构并负载平衡可用CPU内核的处理,因此我对此感兴趣。

反正是否有利于提高我的代码效率而不会丢失我的图像的连续顺序?

由于

1 个答案:

答案 0 :(得分:1)

如果您关心上传订单,我无法看到TPL对您有什么好处。

它“利用硬件......并在可用的CPU核心上负载平衡处理”。 确实,在可以并行运行的任务上。你的任务不能。

你只需要分配一堆线程,它们什么都不做,只是排队等待轮到他们。