有没有办法让多个正在运行的线程从流中提取数据,就开始在同一时间将数据写到单独的文件中?

时间:2019-07-06 15:28:59

标签: c# multithreading synchronization

我正在写软件记录,该记录记录了来自多个传感器的数据。用户应该能够按下一个按钮开始流式传输,然后再按下另一个按钮来开始将数据记录到文件中。每个设备都有其自己的线程,因此按流按钮将启动一个线程以流式传输每个设备,按记录将使所有这些线程开始写文件。

我试图通过创建一个新的线程来开始提取样本,然后使用易失性布尔值告诉线程何时开始将样本写入文件来实现此目的。

这是在线程内运行的代码:

    public void streamData(CancellationToken ct, liblsl.StreamInlet inlet)
    {
        while (true)
        {
            ct.ThrowIfCancellationRequested();
            pullSampleFromLSL(inlet);

            //start writing to file if requested
            //if(_isRecording){
            //  writeToFile()
            //} 

        }
    }

该方法没有提供我希望的精度,因为每个文件记录开始记录时的不同时间戳记(从设置的起点使用Stopwatch.ElapsedMilliseconds记录)。有没有一种方法可以使所有文件都在(尽可能接近)完全相同的时间戳开始?

欢呼

1 个答案:

答案 0 :(得分:-1)

实际上,我将使用监视条件类,该监视类将条件变量通知所有线程启动。