天天加油 - 助您成才
Delphi中的线程类
您正在看的DELPHI是:Delphi中的线程类。
adCount);
end;

同样有一个对应的RemoveThread
procedure RemoveThread;
begin
  InterlockedDecrement(ThreadCount);
end;

它们的功能很简单,就是通过增减一个全局变量来统计进程中的线程数。只是这里用于增减变量的并不是常用的Inc/Dec过程,而是用了InterlockedIncrement/InterlockedDecrement这一对过程,它们实现的功能完全一样,都是对变量加一或减一。但它们有一个最大的区别,那就是InterlockedIncrement/InterlockedDecrement是线程安全的。即它们在多线程下能保证执行结果正确,而Inc/Dec不能。或者按操作系统理论中的术语来说,这是一对原语操作。


以加一为例来说明二者实现细节上的不同:


一般来说,对内存数据加一的操作分解以后有三个步骤:


1
  从内存中读出数据

2
  数据加一
3
  存入内存

现在假设在一个两个线程的应用中用Inc进行加一操作可能出现的一种情况:
1
  线程A从内存中读出数据(假设为3
2
  线程B从内存中读出数据(也是3
3
  线程A对数据加一(现在是4
4
  线程B对数

上一页  1 2 3 4 5 6 7 8 9 10  ... 下一页  >> 

排行

  1. Me关键字在.NET中的使用(转)
  2. VB.Net基本语句(推荐)
  3. 字符串加解密的类(VB.NET Sourc
  4. 走近VB.Net(一),VB中的族,类,
  5. .NET平台下Web树形结构程序设计
  6. 用VB.NET和Excel排生产计划--企业
  7. VB.net是怎样做到的(四、五)
  8. 在VB.NET中应用Agent技术
  9. DataGrid常见解决方案(三)--在Da
  10. Java 正则表达式自义bean
  11. Jsp分页原代码,及用法
  12. 在Swing的JEditorPane控件中实现
  13. 在Tomcat 配置Oracle 及DB2中创建
  14. Tomcat5配置Mysql JDBC数据库连接
  15. Delphi 7 中使用RAVE报表(五)
  16. win32 API窗口句柄的获得——我的
  1. 在C#中编写多线程应用程序,简单
  2. VB实现局域网内的文件传输
  3. VB.NET中的组件开发
  4. 用vb编一个计算器,需要用到数组
  5. 如何用VB.Net创建一个三层的数据
  6. VB.Net的ByVal和ByRef --ByVal时
  7. VB.NET的阳历与农历转换的算法
  8. VB.NET操作SQL Server完全模块
  9. VB中定制DllRegisterServer、Dll
  10. VB中打印ACCESS报表
  11. ECLIPSE ANT INTEGRATION
  12. 在eclipse + MyEclipse下配置建立
  13. 基于WebGIS的GPS系统的设计与实现
  14. JBuilder2005+JBOSS+Oracle9i开发
  15. mysql4.1.10的JDBC驱动(mysql-co
  16. 在Win2003+Tomcat+MySQL下运行JP
  1. vb可不可以实现虚拟中断
  2. VB.NET中的组件开发
  3. 用vb编一个计算器,需要用到数组
  4. 如何用VB.Net创建一个三层的数据
  5. VB.Net的ByVal和ByRef --ByVal时
  6. VB.NET的阳历与农历转换的算法
  7. VB.NET操作SQL Server完全模块
  8. VB中定制DllRegisterServer、Dll
  9. VB中打印ACCESS报表
  10. 基于WebGIS的GPS系统的设计与实现
  11. JBuilder2005+JBOSS+Oracle9i开发
  12. mysql4.1.10的JDBC驱动(mysql-co
  13. 在Win2003+Tomcat+MySQL下运行JP
  14. (原创)当server碰到server,soc
  15. [自创]JCreator安装学习使用方法
  16. 自动生成拼音(汉字反查到拼音)

最近更新

  • 推荐阅读
  • DELPHI《Delphi中的线程类》Delphi中的线程类