高分求解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;
求求各位了 展开
疑惑有:1.如果用20秒限制两个线程 2.什么时候累加这个执行。
我的耗时操作 :
i, res: Integer;
begin
for i := 1 to 100000 do
Inc(res, Sound(sin(i)));
end;
求求各位了 展开
展开全部
定义一个全局变量 i 定义一个定时器 Timer 间隔时间设置为20秒
注意在 递增变量的时候 一定要加锁 防止两个线程同时递增这个变量
声明一个临界区变量 L:TRTLCriticalSection
程序创建时 初始化临界区变量 InitializeCriticalSection(L)
递增i时:锁住临界区
EnterCriticalSection(L);//进入临界区
inc(i)
LeaveCriticalSection(L);//退出临界区
程序结束时 删除临界区变量
DeleteCriticalSection(L)
timer在20秒的时候检测i的值就可以了
临界区变量保证在enter和leave之间的代码同时只能有一个线程访问
防止了变量访问的冲突
注意在 递增变量的时候 一定要加锁 防止两个线程同时递增这个变量
声明一个临界区变量 L:TRTLCriticalSection
程序创建时 初始化临界区变量 InitializeCriticalSection(L)
递增i时:锁住临界区
EnterCriticalSection(L);//进入临界区
inc(i)
LeaveCriticalSection(L);//退出临界区
程序结束时 删除临界区变量
DeleteCriticalSection(L)
timer在20秒的时候检测i的值就可以了
临界区变量保证在enter和leave之间的代码同时只能有一个线程访问
防止了变量访问的冲突
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询