需要C#线程 - 锁定还是监控?

时间:2012-05-03 13:17:26

标签: c# multithreading

我是线程新手,我想知道我是否有好的代码。 情况: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;
        }
    }
}

4 个答案:

答案 0 :(得分:2)

Reader Write Lock SlimBlocking Collection

一个很好的起点。

答案 1 :(得分:1)

您应该考虑使用blocking collection。这将为您处理锁定。

答案 2 :(得分:1)

您的代码只能确保多个编写器不会同时写入。在写入和写入时,它不会阻止ReadData读取和更改newData标志。

答案 3 :(得分:0)

连续2次写入会覆盖数据。这是故意的吗? 你在外面检查newData吗? 你想要实现/保护什么行为?