天天加油 - 助您成才
Delphi中的线程类
您正在看的DELPHI是:Delphi中的线程类。
据加一(现在也是4
5
  线程A将数据存入内存(现在内存中的数据是4
6
  线程B也将数据存入内存(现在内存中的数据还是4,但两个线程都对它加了一,应该是5才对,所以这里出现了错误的结果)

而用InterlockIncrement过程则没有这个问题,因为所谓原语是一种不可中断的操作,即操作系统能保证在一个原语执行完毕前不会进行线程切换。所以在上面那个例子中,只有当线程A执行完将数据存入内存后,线程B才可以开始从中取数并进行加一操作,这样就保证了即使是在多线程情况下,结果也一定会是正确的。


前面那个例子也说明一种线程访问冲突的情况,这也就是为什么线程之间需要同步Synchronize),关于这个,在后面说到同步时还会再详细讨论。


说到同步,有一个题外话:加拿大滑铁卢大学的教授李明曾就Synchronize一词在线程同步中被译作同步提出过异议,个人认为他说的其实很有道理。在中文中同步的意思是同时发生,而线程同步目的就是避免这种同时发生的事情。而在英文中,

上一页  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中的线程类