可是如何保证读写同步呢?
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?

解决方案 »

  1.   

    可是如何保证读写同步呢?
    队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
    可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
    不用timer,在响应消息的事件里处理比较好。
      

  2.   

    可是如何保证读写同步呢?
    队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
    可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
    不用timer,在响应消息的事件里处理比较好。
    如果不用timer,就会造成波形的绘制不是匀速的,因为每秒发送256个点
      

  3.   

    可是如何保证读写同步呢?
    队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
    可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
    不用timer,在响应消息的事件里处理比较好。
    如果不用timer,就会造成波形的绘制不是匀速的,因为每秒发送256个点
    在timer里面画图就成了。
      

  4.   

    可是如何保证读写同步呢?
    队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
    设备会每秒发送256个点到缓冲区,为了保证匀速绘制,在timer里读缓冲区,就是不知道发送速度和读取速度保持一致,如果不一致,我觉得会导致尚未读取的数据,会被后发送的数据覆盖
      

  5.   

    可是如何保证读写同步呢?
    队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
    设备会每秒发送256个点到缓冲区,为了保证匀速绘制,在timer里读缓冲区,就是不知道发送速度和读取速度保持一致,如果不一致,我觉得会导致尚未读取的数据,会被后发送的数据覆盖
    把绘图的缓冲区和接受数据的缓冲区分开。
      

  6.   

    可是如何保证读写同步呢?
    队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
    设备会每秒发送256个点到缓冲区,为了保证匀速绘制,在timer里读缓冲区,就是不知道发送速度和读取速度保持一致,如果不一致,我觉得会导致尚未读取的数据,会被后发送的数据覆盖
    把绘图的缓冲区和接受数据的缓冲区分开。
    恕我愚笨,不知可否把你的思路从头说说,不胜感激
      

  7.   

    设备会每秒发送256个点到缓冲区,为了保证匀速绘制,在timer里读缓冲区,就是不知道发送速度和读取速度保持一致,如果不一致,我觉得会导致尚未读取的数据,会被后发送的数据覆盖
    把绘图的缓冲区和接受数据的缓冲区分开。
    恕我愚笨,不知可否把你的思路从头说说,不胜感激
    主线程开一个主线程和线程交流用的缓冲区1,分成若干块,每块256个点。再来一个用来显示的缓冲区2。每次主线程从缓冲区1读一块数据到缓冲区2,OnTimer事件里从缓冲区2按照时间读若干数据用于显示。
      

  8.   

    主线程开一个主线程和线程交流用的缓冲区1,分成若干块,每块256个点。再来一个用来显示的缓冲区2。每次主线程从缓冲区1读一块数据到缓冲区2,OnTimer事件里从缓冲区2按照时间读若干数据用于显示。
    设备每秒发送256个点到缓冲区1(时间长了缓冲区会不会溢出?),这个是固定的,可是ontimer设置为多大去读缓冲区2,才能同步?