首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于线程的有关问题 急用 高分

2012-02-02 
关于线程的问题 急用 在线等 高分事情是这样的 ,我想完成大型数据的录入工作。包括对文件的存取 我是一行一

关于线程的问题 急用 在线等 高分
事情是这样的 ,我想完成大型数据的录入工作。包括对文件的存取 我是一行一行的读入。刚开始我对数据库的存取是在主线程里实现的。做过相关工作的可能知道, 当数据库录入的时候,主线程没有反映跟死机了似的 直到数据处理完毕后(大概10分钟左右)才有反映。刚开始我以为,把对数据的存储放在,子线程 一切就OK了。
 我创建的线程如下

MainThread()
{
 SubThread *p=new SubThread(false);
}
SubThread(...)
{
 Process()
 {
  //大量数据的录入
 }
 void Execute()
 {
  Synchronize(Process);
 }
}
可是我使用线程的情况跟不使用线程的情况是一样的 当数据处理的时候 主线程依然没有反映

我以为是文件读取延迟的速度可以我吧数据库的操作注释掉之后 发现 对文件的处理时间是很短的

我又有新的疑问是不是子线程的优先级太高了 使得主线程 对用户的响应 得不到处理啊
个人感觉这个疑问有点傻 本人新手 还请各位大侠 帮忙啊


[解决办法]
版主好
我想请教一下在将大量数据录入数据库时,一般是走什么流程呢?
[解决办法]
使用线程同样占用资源,如果数据一次处理比较多依然会出现当机
[解决办法]
Synchronize你用了这个,说明你频繁更新了界面,这样实际上子线程嵌入到了主线程执行,效果一样。
你需要减少或避免在子线程里炒作界面。
[解决办法]
楼主加了与没加子线程一样。Synchronize的作用是吧代码放在主线程内执行。

应该把代码中,需要操作VCL相关组件时,用Synchronize来执行。

另外多线程操作数据库用ADO的话,注意线程同步。ADO不是线程安全的。

热点排行