eviceIntAD初始化后,采集数据时,则ReadIndex下标置为0,即用第一个缓冲区采集A/D数据。当采集完后,则向数据处理线程发送函数SetEvent消息,且两个线程的公共变量SegmentCounts加1,SegmentCounts变量是用于记录当前时刻缓冲队列中能被数据采集线程使用的缓冲区数量。如被使用,然后将ReadIndex偏移至1,再用这第二个缓冲区采集数据。再将SegmentCounts加1,直到ReadIndex等于31为止,然后再回到0位置,重新开始。
数据处理线程在每次接收到SetEvent消息时能判断有多少由于自己被堵塞而没有被处理的缓冲区个数,逐一进行处理,最后再从SegmentCounts变量中减去在所接收到的当前事件下处理的缓冲区个数,具体处理哪个缓冲区由CurrentIndex指向。因此,即便应用程序突然很忙,使数据处理线程