您现在的位置:首页 >> 基础算法 >> window基础 >> 内容

Delphi中多线程安全和并发问题(5)

时间:2011/9/3 15:36:58 点击:

Mutex

  Mutex和Critical Section的功能几乎一致。Mutex的不同之处在于它是一个有更多功能的增强版Critical Section,当然额外负担也更多。

  Mutex有像能够命名,赋予安全属性,进程间访问这样的额外功能。

  Mutex可以在线程之间使用,但是很少这么用。Mutex被设计用于进程间通信,而且一般也是这么用的。

  Semaphore

  Semaphore类似于Mutex,但是不仅仅是一个Entrant,它允许多个Entrant。Entrant的数量可以在Semaphore创建时指定。

  假想一下Mutex是一个正在守卫银行现钞提款机(ATM)的安全警卫。一次仅一人可以使用它,但是安全警卫正在保卫机器不让一队人同时使用它。

  如果安装了4台ATM,Semaphore可能就能派上用场。在这种情况下,安全警卫可能允许一次4人进入并使用ATM,但是一次不能多于4人。

  Event

  Event是用于线程或者进程间来通知某事已经发生的信号。Event可以在某事被完成或者需要干预时用来通知其他Task。

  线程安全的类

  线程安全的类是经过特别设计用来保护特定类型资源的类。每个线程安全的类都实现了一种类型的资源,并且对资源是什么和如何用它都有良好的认知。

  线程安全的类可以简单如线程安全的整数,也可以复杂如线程安全的数据库。线程安全的类内部使用线程安全对象来完成它们的功能。

  Compartmentalization

  Compartmentalization是分离数据并把它赋给单一Task使用的过程。对于服务器来说,Compartmentalization经常是自然而然的,因为每个客户端都能由专门的线程来处理。

  当Compartmentalization不是天然的时,应当考量考量,看看是不是能够这么做。Compartmentalization经常可以通过拷贝全局数据,对数据进行处理,然后把结果返回给全局区域来达到。通过使用Compartmentalization,数据的加锁仅仅发生在初始化和任务结束或者批量更新之时。

上一页12345下一页

作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 沪ICP备05001939号