我一直在处理大量对时间敏感的任务,每个任务都会做很多工作,然后在满足条件的情况下将结果记录到文件中。问题是条件是在任务外部控制的,我想知道当更改将被许多线程读取的条件时,最可接受的做法是什么。
我已经研究过使用MSDN上提出的各种实践,例如使用读者读写器锁或将其定义为volatile,但是这些实践因不线程安全或对性能产生负面影响而广受批评。有更广泛接受,更安全的方法吗?
条件只能在主线程上更改,并且只能由任务读取,如下所示:
private void function(){
while(true){
data = getData()
if(condition){
writeToFile(data)
}
}
}
private void setConditionTrue(){
condition= true;
}
private void setConditionFalse(){
condition=false
}
Task t = new Task(() => function())
t.Start();
欢呼