高分求解Delphi多线程编程

有一个耗时操作,现在暂且定义为为A(单次执行不超过一秒),问题是,我想知道在20秒里面,开两个线程可以执行多少次?疑惑有:1.如果用20秒限制两个线程2.什么时候累加这个... 有一个耗时操作,现在暂且定义为为A(单次执行不超过一秒),问题是,我想知道在20秒里面,开两个线程可以执行多少次?
疑惑有:1.如果用20秒限制两个线程 2.什么时候累加这个执行。
我的耗时操作 :
i, res: Integer;
begin
for i := 1 to 100000 do
Inc(res, Sound(sin(i)));
end;
求求各位了
展开
 我来答
百度网友a0753819f
2010-05-30 · 超过19用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:50.5万
展开全部
定义一个全局变量 i 定义一个定时器 Timer 间隔时间设置为20秒
注意在 递增变量的时候 一定要加锁 防止两个线程同时递增这个变量

声明一个临界区变量 L:TRTLCriticalSection
程序创建时 初始化临界区变量 InitializeCriticalSection(L)

递增i时:锁住临界区
EnterCriticalSection(L);//进入临界区
inc(i)
LeaveCriticalSection(L);//退出临界区

程序结束时 删除临界区变量
DeleteCriticalSection(L)

timer在20秒的时候检测i的值就可以了

临界区变量保证在enter和leave之间的代码同时只能有一个线程访问
防止了变量访问的冲突
djptony
2010-05-29 · TA获得超过583个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:555万
展开全部
定义两个全局变量,一个时间,一个次数,在线程中增加时间判断,如果是第一次执行(次说为0)那么为时间变量赋初始值,如果不是第一次执行(次数大于0),那么判断时间,如果大于20秒停止程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式