如何计算多个异步进程
本文关键字:异步 进程 计算 何计算 | 更新日期: 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分钟
实际执行代码可能会导致不同的结果,因为每个任务之间可能会有更长的延迟。