b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

delphi多线程_delphi三层架构源码_delphi多线程串行执行

电脑杂谈  发布时间:2017-01-11 05:06:40  来源:网络整理

delphi多线程_delphi三层架构源码_delphi多线程串行执行

在了解多线程之前我们先了解一下进程和线程的关系

一个程序至少有一个主进程,一个进程至少有一个线程。

为了保证线程的安全性请大家看看下面介绍Delphi多线程同步的一些处理方案大家可以参考:

主线程又程为UI线程。

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。

多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以仅仅是看上去会一些,明白了2+2的时候,其实我还不知道1+1。delphi多线程

开始本应该是一篇洋洋洒洒的文字, 不过我还是提倡先做起来, 在尝试中去理解.

先试试这个:

procedure TForm1.Button1Click(Sender: TObject); var   i: Integer; begin   for i := 0 to 500000 do   begin     Canvas.TextOut(1010, IntToStr(i));   endend

上面程序运行时, 我们的窗体基本是 "死" 的, 可以在你在程序运行期间拖动窗体试试...

Delphi 为我们提供了一个简单的办法(Application.ProcessMessages)来解决这个问题:

procedure TForm1.Button1Click(Sender: TObject); var   i: Integer; begin   for i := 0 to 500000 do   begin     Canvas.TextOut(1010, IntToStr(i));     Application.ProcessMessages;   endend

这个 Application.ProcessMessages; 一般用在比较费时的循环中, 它会检查并先处理消息队列中的其他消息.

但这算不上多线程, 譬如: 运行中你拖动窗体, 循环会暂停下来...

在使用多线程以前, 让我们先简单修改一下程序:

function MyFun: Integer; var   i: Integer; begin   for i := 0 to 500000 do   begin     Form1.Canvas.Lock;     Form1.Canvas.TextOut(1010, IntToStr(i));     Form1.Canvas.Unlock;   end;   Result := 0end;  procedure TForm1.Button1Click(Sender: TObject); begin   MyFun; end


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25504-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 储静
      储静

      一会儿说伊拉克“可能”有杀伤性武器要入侵伊拉克

    • 宋欢欢
      宋欢欢

      还有心情在对中国说三道四

    热点图片
    拼命载入中...