如何计算多个异步进程

本文关键字:异步 进程 计算 何计算 | 更新日期: 2023-09-27 18:25:37

我有一个需要30ms的过程。我想把它发射一百万次。我每1毫秒启动一个进程。完成所有流程需要多少ms

更新

我有一个windows表单,代码是:

public partial class Form1 : Form
{
    private AsyncTimer timer;
    private List<int> grades = new List<int>();
    public Form1()
    {
        timer = new AsyncTimer();
        timer.OnTimerTick += new AsyncTimer.TimerCallbackDel(Syncer);
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        Stopwatch watch = new Stopwatch();
        watch.Start();
        timer.StartTimer("1");
        watch.Stop();
        string processTime = watch.Elapsed.Milliseconds.ToString();
    }
    private void Syncer()
    {
        grades.Add(DoTast());
    }
    public static int DoTast()
    {
        byte[] source = File.ReadAllBytes(@"C:'Users'Public'Music'Sample Music'Kalimba.mp3");
        byte[] input = File.ReadAllBytes(@"C:'Users'Public'Music'Sample Music'Maid with the Flaxen Hair.mp3");
        int i = 0;
        int grade = 0;
        for (i = 0; i < input.Length; i++)
        {
            if (source[i] == input[i])
            {
                grade++;
            }
        }
        return grade;
    }
}

这是AsyncTimer类:

class AsyncTimer
{
    private Timer timer1;
    public delegate void TimerCallbackDel();
    public event TimerCallbackDel OnTimerTick;
    private void TimerCallback(object state)
    {
        if (OnTimerTick != null)
        OnTimerTick();
    }
    public void StartTimer(string interval)
    {
        timer1 = new Timer(TimerCallback, null, 0, Int32.Parse(interval) * 1);
    }
}

每1ms我就开始一个新任务,比较两个阵列,需要30ms。现在它需要多长时间才能发射100万次?

如何计算多个异步进程

如果我们假设您关于每1毫秒启动一个新任务的语句,并且每个任务将在30毫秒后完成,那么您可以看到最多有30个并发任务在执行。所有任务的执行时间将是

1000000 x 1毫秒+30毫秒=1000030毫秒~16.7分钟

实际执行代码可能会导致不同的结果,因为每个任务之间可能会有更长的延迟。