随笔分类 -  Delphi之多线程

摘要:首先看TThread源码中关于OnTerminate的代码: 再看Delphi自带的帮助手册中对于OnTerminate的解释: Occurs after the thread's Execute method has returned and before the thread is destro 阅读全文
posted @ 2015-08-04 11:01 xumenger 阅读(2315) 评论(0) 推荐(0)
摘要:看本文时,可以同时参考:Delphi中线程类 TThread实现多线程编程(事件、临界区、Synchronize、WaitFor……) 先说一下RTL和VCL RTL(Run-Time library),运行时库,包括System、SysUtils、Math三个单元,提供的函数与语言、编译器、操作系 阅读全文
posted @ 2015-05-15 09:28 xumenger 阅读(3879) 评论(0) 推荐(0)
摘要:更详细的可以参考:http://www.cnblogs.com/xumenger/p/4450659.html 或者参考之后的博客 四个系统内核对象(事件、互斥、信号、计时器)都是线程同步的手段,从这也能看出处理线程同步的复杂性;不过这还不是全部,Windows Vista开始增加了 Conditi 阅读全文
posted @ 2015-05-11 08:53 xumenger 阅读(1028) 评论(0) 推荐(0)
摘要:上篇博客中提出了一个问题:怎么结束一个定时循环执行的线程,并给出了一个解决方案,但是又出现了一个问题,详细去参考上一篇博客。 然后出去撒了个尿,突然脑子里出现了一个想法(看来工作和思考久了,出去走走,哪怕是去撒个尿,都可能尿出火花,所以工作和学习的时常根本就不等同于效率灵感不是在那里拼命工作、想就能 阅读全文
posted @ 2015-04-24 17:47 xumenger 阅读(2967) 评论(0) 推荐(0)
摘要:在线程对象被释放之前,首先要检查线程是否还在执行中,如果线程还在执行中(线程ID不为0,并且线程结束标志未设置),则调用Terminate 过程结束线程。Terminate 过程只是简单地设置线程类的 Terminated标志,如下面的代码: 所以线程仍然必须继续执行到正常结束之后才行,而不是立即终 阅读全文
posted @ 2015-04-24 16:49 xumenger 阅读(5781) 评论(0) 推荐(0)
摘要:类 Create 了就要 Free; 但 TThread(的子类) 有特殊性, 很多时候我们不能确定新建的线程什么时候执行完(也就是什么时候该释放); 如果线程执行完毕自己知道释放就好了, 所以 TThread 给了一个布尔属性 FreeOnTerminate, 如果为 True, 线程执行完毕后就 阅读全文
posted @ 2015-04-24 15:24 xumenger 阅读(6314) 评论(0) 推荐(1)
摘要:当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。 例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件的字符数。当然,在整个文件调入内存之前,统计它的计数是没有意义的。但是,由于每个操作都有自己的线程,操作系统会把两个线程当做是互不相干的任务分别执行,这样 阅读全文
posted @ 2015-04-23 15:20 xumenger 阅读(7400) 评论(1) 推荐(5)
摘要:尽管多线程能够解决许多问题,但是同时它又给我们带来了很多的问题。其中主要的问题就是:对全局变量或句柄这样的全局资源如何访问?另外,当必须确保一个线程中的某些事件要在另一个线程中的其他时间之前(或之后)发生时,该怎么办?这里将讲解通过使用由 Delphi提供的线程局部存储和 A P I为线程提供同步的 阅读全文
posted @ 2015-04-23 15:13 xumenger 阅读(2832) 评论(0) 推荐(1)
摘要:接着上文介绍TThread。 现在开始说明 Synchronize和WaitFor 但是在介绍这两个函数之前,需要先介绍另外两个线程同步技术:事件和临界区 事件(Event) 事件(Event)与Delphi中的事件有所不同。从本质上讲,Event其实就相当于一个全局的布尔变量。它有两个赋值操作:S 阅读全文
posted @ 2015-04-23 11:30 xumenger 阅读(2774) 评论(0) 推荐(0)
摘要:参考:http://www.cnblogs.com/rogee/archive/2010/09/20/1832053.html Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数的Delphi书籍都有讲到,但是基本上都是对TThread类的几个成员作一简单介绍,再说明一个 阅读全文
posted @ 2015-04-23 09:21 xumenger 阅读(2785) 评论(0) 推荐(0)
摘要:在16位时代,当我们在Windows3.x下编程时,经常会用到GetTickCount()或者timeGetTime()来判断一段代码的执行时间。示例如下 在多线程环境下,这是很困难的,因为在执行程序中间,操作系统可能会把CPU时间片分给别的进程。所以,用上述方法测出的时间并不真实。 为了解决这个问 阅读全文
posted @ 2015-04-20 09:54 xumenger 阅读(1015) 评论(0) 推荐(0)
摘要:当线程对象的Execute()执行完毕,我们就认为此线程终止了。这时候,它会调用Delphi的一个标准例程EndThread(),这个例程再调用API函数ExitThread()。由ExitThread()来清除线程所占用的栈。 当结束使用TThread对象时,应该确保已经把这个Delphi对象从内 阅读全文
posted @ 2015-04-20 09:17 xumenger 阅读(7541) 评论(0) 推荐(0)
摘要:TThread在Classes单元里的声明如下 先说一下TThread的Create的参数 当TThread的Create()被调用的时候,需要传递一个布尔型的参数CreateSuspended。如果把这个参数设为False,那么当调用Create()之后,Execute()会被自动调用,也就是自动 阅读全文
posted @ 2015-04-20 08:57 xumenger 阅读(6187) 评论(0) 推荐(1)
摘要:第一部分 快速开发的基础 第1章 Delphi 5下的Windows编程 1 1.1 Delphi产品家族 1 1.2 Delphi是什么 3 1.2.1 可视化开发环境 3 1.2.2 编译器的速度和已编译代码的效率 4 1.2.3 编程语言的功能及其复杂性 4 1.2.4 数据库结构的灵活性和可 阅读全文
posted @ 2015-03-29 22:35 xumenger 阅读(1337) 评论(1) 推荐(0)
摘要:参考http://blog.chinaunix.net/uid-10535208-id-2949323.html 一、概述 Delphi提供了好几种对象以方便进行多线程编程。多线程应用程序有以下几方面的功能: 1.避免性能瓶颈:单线程应用程序在进行比较慢的操作如磁盘读写的时候,CPU必须停下来等待, 阅读全文
posted @ 2015-03-25 21:25 xumenger 阅读(1179) 评论(0) 推荐(1)
摘要:1. 介绍Win32 API和Win32系统。还要讨论Win32系统的功能以及它与16位系统在功能上的几个主要区别。只是让对Win32系统有一个基本的了解。当已经基本了解Win32操作后,就可以在任何需要的时候使用Win32系统提供的高级功能了。 2. Win32环境中有两种基本的对象类型:内核对象 阅读全文
posted @ 2015-03-06 22:03 xumenger 阅读(1447) 评论(0) 推荐(0)

业精于勤而荒于嬉,行成于思而毁于随

十万小时的反复练习