Slim Reader/Writer (SRW) Locks
轻量级级读写锁
轻量级读写锁允许进程内的多线程间共享资源。它们优化速度并且占用内存小。读写锁不能在进程之间分享。
读线程在共享资源里读取数据,而写线程在共享资源里写入数据。当多个线程在同一资源里进行同时读写的时候,如果读操作远多于写操作的话,排它锁(比如互斥段、互斥锁等)可能会进入一个瓶颈。
轻量级读写锁为多线程访问同一资源提供了两个模式。
共享模式,它为多个读线程提供了共享的只读访问方式,所以读线程可以不停地从共享资源里读取数据。如果读操作多于写操作,相对于互斥段,它的性能和吞吐量都增加了。
排他模式:一次只给一个写线程读/写的权限。当排他模式里锁被获得后,其他线程都不允许访问共享资源,直到锁被释放。
在上面任意一个模式内,一个SRW锁可以被获取。读线程可以在共享模式中获得锁,而写线程可以在排他模式中获得锁。这并不保证线程获得锁的权限的顺序。SRW锁既不公平也不FIFO。
一个SRW锁的大小和指针相同。它的优点是快速更新锁的状态。缺点是只可以存储少量状态信息,所以SRW锁不能递归获得(单个线程不能在没有释放它的情况下再次获得它)。另外,一个读锁不能升级为写锁。
Last updated