永发信息网

DELPHI 关于单个线程里是否同步问题

答案:2  悬赏:0  手机版
解决时间 2021-03-02 06:10
  • 提问者网友:美人性情
  • 2021-03-01 20:12
写了个打怪辅助,建了一个线程锁定打怪过程,我想问下打怪过程中里面的事件1,事件2,事件3是不是同步运行,如果是同步,如何坐到让他们不同步呢?或者相反也帮解说下,谢谢
procedure TForm1.DaGuai; //线程锁定打怪
.....
begin
while GTrue do
begin
if ..... then
begin
事件1
end
if 。。。。 then
begin
事件2
end;
if 。。。then
begin
事件3
end

end
end

我现在试了下,他是先执行事件1等事件1执行完了才能执行事件2
如何让他事件1事件2一起执行呢?
最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-03-01 21:47
单个线程不需要同步.
多个线程修改同一共享资源的话,需要同步.!
记住一点,是全局的变量需要使用多线程同步方法同步.
如果是操作VCL控件的话,需要使用Delphi带的synchronize或SendMessage和PostMessage同步
全部回答
  • 1楼网友:第四晚心情
  • 2021-03-01 22:31
1固然很多材料上说和vcl同步最好用synchronize,但我测试的结不雅是不消也没有影响,赞助上也是只是说synchronize causes the call specified by method to be executed using the main thread, thereby avoiding multi-thread conflicts. 至少不会出现“内存不克不及为read的缺点”的缺点,可能代码哪里写错了。 如不雅须要同步那就得同步。synchronize只是同步的一种办法(更精确的说是供给一种在主线程中队列履行的办法),你可以应用任何其他的办法。 我想说的只是synchronize和vcl同步没紧要。 关键是fonprogress做的是什么,如不雅仅仅是操作vclsynchronize反而画蛇添足。操作vcl并不会冲突,不信赖的话可以试一下。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯