class TaskQueue
{
public delegate void Runnable();
Runnable d = null;
public void EnQueue(Runnable r)
{
lock(this)
{
d += r;
}
}
public void Schedule()
{
Runnable run = null;
lock(this)
{
run = d;
d = null;
}
if (run != null)
run();
}
};
列表循环;
class TaskQueue
{
public delegate void Runnable();
List<Runnable> tasks = new List<Runnable>();
public void EnQueue(Runnable r)
{
lock(this)
{
tasks.Add(r);
}
}
public int Schedule()
{
List<Runnable> all;
lock(this)
{
all = tasks;
tasks = new List<Runnable>();
}
all.ForEach(task =>
{
task();
});
return all.Count;
}
};