可是如何保证读写同步呢?
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
不用timer,在响应消息的事件里处理比较好。
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
不用timer,在响应消息的事件里处理比较好。
如果不用timer,就会造成波形的绘制不是匀速的,因为每秒发送256个点
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
可是写是固定的,例如每秒256个点发送到缓冲区,然后一定间隔(timer)去读缓冲区,怎么弄呢?
不用timer,在响应消息的事件里处理比较好。
如果不用timer,就会造成波形的绘制不是匀速的,因为每秒发送256个点
在timer里面画图就成了。
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
设备会每秒发送256个点到缓冲区,为了保证匀速绘制,在timer里读缓冲区,就是不知道发送速度和读取速度保持一致,如果不一致,我觉得会导致尚未读取的数据,会被后发送的数据覆盖
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
设备会每秒发送256个点到缓冲区,为了保证匀速绘制,在timer里读缓冲区,就是不知道发送速度和读取速度保持一致,如果不一致,我觉得会导致尚未读取的数据,会被后发送的数据覆盖
把绘图的缓冲区和接受数据的缓冲区分开。
队列由多个块组成,一个块一个锁,每写满一块后发消息给主线程让它读,主线程将数据移到自己的缓冲区里。由于多个块,所以一般锁也不会阻碍线程。
设备会每秒发送256个点到缓冲区,为了保证匀速绘制,在timer里读缓冲区,就是不知道发送速度和读取速度保持一致,如果不一致,我觉得会导致尚未读取的数据,会被后发送的数据覆盖
把绘图的缓冲区和接受数据的缓冲区分开。
恕我愚笨,不知可否把你的思路从头说说,不胜感激
把绘图的缓冲区和接受数据的缓冲区分开。
恕我愚笨,不知可否把你的思路从头说说,不胜感激
主线程开一个主线程和线程交流用的缓冲区1,分成若干块,每块256个点。再来一个用来显示的缓冲区2。每次主线程从缓冲区1读一块数据到缓冲区2,OnTimer事件里从缓冲区2按照时间读若干数据用于显示。
设备每秒发送256个点到缓冲区1(时间长了缓冲区会不会溢出?),这个是固定的,可是ontimer设置为多大去读缓冲区2,才能同步?