1、多线程总体认识

  1. 当前程序是一个进程, 进程只是一个工作环境, 线程是工作者;
  2. 每个进程都会有一个启动线程(或叫主线程), 也就是说: 大量的编码都是写给这个主线程的;
  3. ExitThread(0); 退出主线程;
  4. 系统不允许一个没有线程的进程存在, 所以程序就退出了.
  5. ExitThread 函数的参数是一个退出码, 这个退出码是给之后的其他函数用的, 这里随便给个无符号整数即可.

2、 VCL实现同步的另一种方法就是调用线程类的Synchronize的过程,此过程需要一个无参数的procedure,故在此procedure中无法传递参数值,但可以通过类的成员来实现。在类的Execute中只须调用Synchronize就可以了。

实现:

关键在于对Synchronize参数的定义。定义一个无参数的procedure通过它来访问类的成员变量szName和nIndex。在类的重载Execute中调用Synchronize。

3、多线程用TThread类以及Uses syncobjs后使用的 TCriticalSection (临界区),TMutex(互斥体),TSemaphore (信号对象,D2009才开始有),TEvent (事件对象)很多都是引用了API的方法进行了一定的简化,不过也有部分功能的缺失,如Event (事件对象)缺少了启动步进一次后暂停的功能,不过基本在同步上已经够用了,另外在TThread类声明的Execute过程里,加上FreeOnTerminate := True;这句会让线程执行完后自动释放,还可以把功能代码的方法套在Synchronize()里,用于同步一些非线程安全的控件对象,避免多个线程同时对一个对象操作引发的问题。

Delphi多线程总结相关推荐

  1. Delphi多线程详解CreateThread、TThread,以及线程间通过临界区(CriticalSection)实现同步

     在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:ht ...

  2. delphi 多线程3

     多线程程序设计 我们知道,win95或winNT都是"多线程"的操作系统,在DELPHI 2.0中,我们可以充分利用这一特性,编写出"多线程"的应用程序. 对 ...

  3. Delphi多线程详解

    (整理自网络) Delphi多线程处理 1-1多线程的基本概念 WIN 98/NT/2000/XP 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用CPU 运行时间和资源,或者 ...

  4. DELPHI 多线程同步几种方法

    DELPHI 多线程(TThread类的实现) DELPHI 多线程(TThread类的实现) 之前学习了用API实现,让我们再学习下用DELPHI的TThread类. 先新建一个普通的工程,再新建一 ...

  5. delphi 多线程详解及其详解例子

    在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:http: ...

  6. delphi多线程超时控Delphi7中Indy控件对于网络数据的接收

    1.引言 随着我国经济和社会的发展,水资源的科学管理与合理配置显得越来越重要.而获取大量的.实时的.动态的水资源及其相关信息则是实现水资源科学管理的基础.传统的水资源信息获取采用人工抄取数据后逐级的方 ...

  7. 基于GPIB总线的无线电频谱监测系统的设计delphi多线程超时控

    随着通信技术的发展,无线电资源作为公共资源的一种,需要国家有关部门对其进行有效的分配和.设计界面友好.运行稳定.实时反应迅速的监测软件是对无线电资源进行有效配置的重要环节,也是国家和信息安全保障的重要 ...

  8. [Delphi] 多线程编程

    本篇简单介绍一下Delphi下多线程的编写 一.CreateThread 这个是最原始最基础的方法,利用Windows API来创建 function ThreadProc(param: LPVOID ...

  9. delphi多线程TThread类介绍

    Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchr ...

  10. Delphi 多线程编程(1)

    本文的内容取自万一博客,并重新加以整理,在此留存仅仅是方便自己学习和查阅.所有代码均亲自测试 delphi7下测试有效.图片均为自己制作. 多线程应该是编程工作者的基础技能, 但这个基础我从来没学过, ...

最新文章

  1. “AI让老百姓最多跑一次”:智源科学家打造下一代政务服务智能助手
  2. SAP QM 采样方案的c1 d1 c2 d2 --多重采样
  3. Windows Server 2012如何实现双网卡绑定
  4. python培训深圳-深圳哪家python培训班比较靠谱
  5. UWP 中的 LaunchUriAsync,使用默认浏览器或其他应用打开链接
  6. 学计算机所需要的英语单词,学计算机最少要懂的英语单词是什么
  7. 【千字分析】剑指 Offer 46. 把数字翻译成字符串
  8. 在崩溃或断电后测试Lucene的索引耐久性
  9. atxserver运行没有反应_连续生物工艺:灌流生物反应器
  10. 用eclipse开发android小程序,【转】Eclipse 开发Android小程序遇到的问题总结
  11. Bootstrap3 弹出提示插件的方法
  12. 20155222 卢梓杰 myod
  13. java通过+拼接字符串导致的无效SQL,三目运算符与+运算符结合使用时需要注意了
  14. 计算机组成与设计参考答案,计算机组成与设计硬件软件接口--课后习题答案.pdf...
  15. Javaweb 新浪云平台部署
  16. jetson nano图形界面自动登录(lxde桌面自动登录)
  17. Python实现手机和电脑之间的文件传输
  18. 史上最全的中高级JAVA工程师-面试题汇总
  19. unity warning CS0108: test4.name' hides inherited memberUnityEngine.Object.name’.
  20. picker多选 vant_Vant Picker 选择器

热门文章

  1. 基于富芮坤的FR801 BLE芯片开发
  2. practical perforce
  3. 解决苹果M1芯片无法通过绿联转接器连接网线的问题
  4. win10美化任务栏不用软件,任务栏全透明效果
  5. 最全的免费OA试用地址
  6. 最最简单的ensp拓扑图
  7. 进军东南亚市场,腾讯云数据库 TDSQL 助力印尼 BNC 银行数字化转型
  8. 计算机键盘毕业设计,毕业论文--智能键盘设计方案.doc
  9. 头部和四肢血量间相互流动速率系数的确定(含python代码)
  10. epub电子书如何用安卓手机打开?