DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cuiqingbo
今日帖子: 25
在线用户: 16
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2017/10/12 15:32:22
标题:
多线程TThread.CreateAnonymousThread问题? 浏览:1367
加入我的收藏
楼主: xe7 代码如下:
    for i := 1 to 10 do
     begin
         TThread.CreateAnonymousThread(写文件过程).Start;
     end;

执行后,发现只执行了几次。而不是理论上 i 的 10 次。
注:写文件过程 没有异常

如果不用 TThread.CreateAnonymousThread,
单纯执行 i 里面 “写文件过程”,
    for i := 1 to 10 do
     begin
        写文件过程;
     end;

是可以生成 10个文件的,只是界面卡死罢了;

请问什么原因和如何解决呢?谢谢!
----------------------------------------------
谢谢各位大大
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2017/10/12 15:34:48
1楼: for循环中是步进,是单线程的,而你创建匿名线程后,就是多线程了,多线程在写文件时,要注意有没有冲突,如果有冲突,会产生异常,该子线程就停止了。
比如文件名是否有冲突
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2017/10/12 16:48:41
2楼: 请问楼上,那上面代码 如何根据 数量  做 循环 多线程呢? 3q

因为我是从 数据库 按 记录数 进行 多线程写文件的;
----------------------------------------------
谢谢各位大大
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
2017/10/12 20:35:15
3楼: 你得理解硬盘自己就是串行的, 它必须一个一个依次完成读写请求, 所以搞多线程同时读写硬盘是不会有效益的, 到了硬盘那里所有访问都被串行起来了

所以对于IO, 用线程的好处就只有不卡界面, 你只需要创建一个线程然后在那个线程里循环10次写10个文件就好了, 效率比开10个线程只高不低
----------------------------------------------
-
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/10/13 13:47:43
4楼: 楼上高见
----------------------------------------------
http://mcool.appinn.me/
作者:
男 xuchuantao (暗黑天使) ★☆☆☆☆ -
普通会员
2017/10/13 19:07:14
5楼: 写文件不要多进程性能很低
----------------------------------------------
按此在新窗口浏览图片
作者:
男 bdl1 (bdl1) ▲▲▲▲▲ -
普通会员
2017/10/16 7:41:39
6楼: TThread.CreateAnonymousThread
procedure
    for i := 1 to 10 do
     begin
         (写文件过程)
     end;
end.Start;
----------------------------------------------
-我的博客
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2017/10/18 23:26:27
7楼: thx all
----------------------------------------------
谢谢各位大大
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS