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下一页