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. python空值填充_pandas | DataFrame基础运算以及空值填充
  2. 漂洋过海来看你 可惜Uber不便宜
  3. Android 中input event的分析
  4. java接口构建英雄属性_Java开发学习心得(三):项目结构
  5. Steps to One
  6. VTK:绘图之StackedBar
  7. C#之操作窗口模拟键鼠事件文件监控等知识使用
  8. Android textview 获取url,获取电话号码
  9. mfc try catch 捕获并显示_你的异常捕获够优雅不?求你别只会try{...} catch{...}了
  10. angularjs post返回html_Python 爬虫网页解析工具lxml.html(二)
  11. 架构系列---发号器(全局唯一ID生成器)系统设计方案和思路
  12. 计算机显示无法格式化,电脑提示windows无法完成格式化怎么办
  13. android 自定义组件 属性值,自定义组件之自定义属性
  14. 在 HTML 中使用 ARIA 的规则
  15. TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行
  16. 虚拟机扩展C盘容量方法
  17. RPG Maker MV-去掉开头动画
  18. lstm模型_基于LSTM模型的学生反馈文本学业情绪识别方法
  19. 特斯拉冻结招聘或因「幽灵刹车」故障,全球大厂掀裁员潮人心惶惶
  20. 电子沙盘数字沙盘MR AR VR开发教程

热门文章

  1. 如何查询PC端的蓝牙Bluetooth版本
  2. php安装docsify,docsify - 无需构建快速生成文档网站
  3. Linux C语言生成随机数
  4. Android屏幕锁设计
  5. matlab二维怎么定义,matlab中如何定义一个10*2的二维数组,用来储存后面算出的数值...
  6. android 获取网络视频资源,Android 加载网络视频(url地址)第三方框架简用
  7. 区块链-3:区块链底层架构
  8. et结波导口转换_波导同轴转换
  9. Flutter 路由传参配置
  10. 尚硅谷Shell学习笔记