我是线程新手,我想知道我是否有好的代码。 情况:3个班,读者,作家和数据。编写者尽可能快地将数据写入数据,Reader,每秒读取一次(如果编写者没有写入新数据,他会检查标记,如果是真的,有新数据要读,如果不是,他可以使用旧数据)。 请告诉我它是Data class的有效代码:
class GameData
{
String GameData="";
bool newData = false;
public String ReadData()
{
newData = false;
return GameData;
}
public void WriteData(String d)
{
lock (this)
{
GameData = d;
newData = true;
}
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
您应该考虑使用blocking collection。这将为您处理锁定。
答案 2 :(得分:1)
您的代码只能确保多个编写器不会同时写入。在写入和写入时,它不会阻止ReadData读取和更改newData标志。
答案 3 :(得分:0)
连续2次写入会覆盖数据。这是故意的吗? 你在外面检查newData吗? 你想要实现/保护什么行为?