本人初学C#不久 目前做一个关于串口数据采集的东西(简言之,从串口读字符,分析出数据桢,提取有用数据桢,最后数据入库).
我为了提高实时性用了3条线程:
1、主线程(用来接收字符,将字符放入字符缓冲队列)
2、分析桢线程(用来提取字符缓冲队列中的字符,分析出数据桢,将桢放入桢缓冲队列)
3、数据分析线程(用来分析桢队列中的有效数据桢,并提取数据字段,存入数据库)通讯波特率为57600,桢长度在20~40不等,数据产生相当快。
请问各位打侠,我的3条线程的思路是否可取,并该设置接收门限多少,怎样同步线程,才既保证实时性又保证cpu资源消耗很低????????
我为了提高实时性用了3条线程:
1、主线程(用来接收字符,将字符放入字符缓冲队列)
2、分析桢线程(用来提取字符缓冲队列中的字符,分析出数据桢,将桢放入桢缓冲队列)
3、数据分析线程(用来分析桢队列中的有效数据桢,并提取数据字段,存入数据库)通讯波特率为57600,桢长度在20~40不等,数据产生相当快。
请问各位打侠,我的3条线程的思路是否可取,并该设置接收门限多少,怎样同步线程,才既保证实时性又保证cpu资源消耗很低????????
如果你的数据处理不是非常复杂,那么实时性是非常好的
数据库的连接是很慢的,建议单独线程
再问一下在数据分析线程里面可不可以用
while(true)
{
if(bufferNotFull)
sleep(100);
else
{
//数据处理...
}
}