程序功能:从串口读取数据,经过解析,存储到数据库中。串口接收程序不断的将数据添加到 队列A中。
由于存储数据比较耗时(需要解析、连接数据库等),因此用单独的线程实现。另开辟一个线程Thread1 不断的访问队列。当队列的长度大于一定数量的时候,如何根据队列的积累的长度,适时新建和关闭一个线程 请问改如何控制???

解决方案 »

  1.   

    当队列的长度大于一定数量的时候,根据队列的积累的长度
    发送消息(PostMessage/SendMessage)、置位事件(SetEvent)...
    在消息回调中、在等待事件置位的线程中...
    新建和关闭一个线程仅供参考
      

  2.   

    不需要适时新建和关闭一个线程,在开始时建立好写线程,
    需要线程同步技术
    当“队列的积累的长度”到达时 setevent通知 写线程开始工作
     处理完一个数据后更新队列(此时用到信号量防止两个线程同时写队列),当没有数据时
    此时写线程停止下来等读线程的通知,正常情况下两个线程同时读写("并行")。
      

  3.   

    由于存储数据比较耗时(需要解析、连接数据库等),因此用单独的线程实现。
    //////////////////////////////////////////////////////////////////////////
    楼主使用的是什么数据库?
    SQL2005之类的还是SQLite3之类
    SQL2005之类的楼主可以预览创建连接,这个连接一般不要关闭,要使用时拿来直接使用,效率不会很低
    SQLite3之类的数据库,可以采用事务方式处理,效率会提高N倍