程序功能:从串口读取数据,经过解析,存储到数据库中。串口接收程序不断的将数据添加到 队列A中。
由于存储数据比较耗时(需要解析、连接数据库等),因此用单独的线程实现。另开辟一个线程Thread1 不断的访问队列。当队列的长度大于一定数量的时候,如何根据队列的积累的长度,适时新建和关闭一个线程 请问改如何控制???
由于存储数据比较耗时(需要解析、连接数据库等),因此用单独的线程实现。另开辟一个线程Thread1 不断的访问队列。当队列的长度大于一定数量的时候,如何根据队列的积累的长度,适时新建和关闭一个线程 请问改如何控制???
解决方案 »
- 在VC对话框程序主窗口中加载PNG格式的图片做背景
- char*转_bstr_t时的调试问题
- 如何合理的设计CMyAPP/CMyDocument/CMainFrame/CMyView各个类内拥有的函数以及功能呢?
- 无法从VC6.0中打开MSDN了
- 我想通过VC++编程读Word格式的文件,我该怎么实现?
- 求找一个目录浏览的函数
- 一个关于文档框架的比较难的问题。
- ■■■ 请问怎么根据进程名得到进程ID?谢谢 ■■■
- 求助 基于MFC实现OpenGL贝塞尔曲面的绘制
- 请问如何在对话框中动态的加入控件?
- InvalidateRect(NULL,TRUE)设置后的无效区域不是窗口的整个客户区域大小
- 在打开扩展桌面的时用DirectX9截取的桌面HDC上DrawIcon\DrawIconEx失效
发送消息(PostMessage/SendMessage)、置位事件(SetEvent)...
在消息回调中、在等待事件置位的线程中...
新建和关闭一个线程仅供参考
需要线程同步技术
当“队列的积累的长度”到达时 setevent通知 写线程开始工作
处理完一个数据后更新队列(此时用到信号量防止两个线程同时写队列),当没有数据时
此时写线程停止下来等读线程的通知,正常情况下两个线程同时读写("并行")。
//////////////////////////////////////////////////////////////////////////
楼主使用的是什么数据库?
SQL2005之类的还是SQLite3之类
SQL2005之类的楼主可以预览创建连接,这个连接一般不要关闭,要使用时拿来直接使用,效率不会很低
SQLite3之类的数据库,可以采用事务方式处理,效率会提高N倍