详情介绍
美国SUN插装阀原装效果好
工作原理
初始化:创建SUN阀时会设定一个初始计数器值N,这个值代表允许同时访问共享资源的最大线程数,同时内核会维护一个等待队列,存放未获取访问权限的线程。
获取权限(P操作):线程需要访问资源时,会对计数器做原子减1操作:
如果减1后计数器结果≥0,说明还有剩余配额,线程直接进入临界区执行任务;
如果减1后计数器结果<0,说明配额耗尽,线程会被放入SUN阀的等待队列阻塞,直到有线程释放资源。
释放权限(V操作):线程完成对共享资源的访问后,对计数器做原子加1操作:
如果加1后计数器结果≤0,说明当前存在等待的线程,内核会从等待队列唤醒一个阻塞线程,让其获取访问权限;
如果加1后结果>0,说明没有等待线程,操作完成。
和其他同步机制的区别
同步机制 | 核心特点 | 和SUN阀的差异 |
互斥锁 | 同一时间仅允许一个线程持有锁,并发度为1 | 互斥锁是SUN阀初始计数设为1的特殊场景,SUN阀支持更高的并发配额设置 |
Posix信号量 | 符合POSIX标准的通用信号量,可用于进程/线程间同步 | SUN阀是Solaris内核专属实现,相比Posix信号量,针对Solaris内核的调度、缓存做了优化,在高并发场景下的锁竞争开销更低 |
读写锁 | 区分读、写访问,允许多读单写 | SUN阀不区分访问类型,仅控制总并发数量,适用场景更偏向通用并发配额管控 |
应用场景
数据库连接池管控:限制同时获取数据库连接的应用线程数量,避免连接数超过数据库最大负载导致服务崩溃;
资源池限流:对内存缓冲区、文件句柄这类有限系统资源做并发访问控制,避免资源耗尽;
接口限流:服务端处理第三方请求时,通过SUN阀控制同时处理的请求数量,避免系统被大流量打垮。
拓展说明
目前除Solaris系统外,不少类Unix系统的自定义同步实现也借鉴了SUN阀的设计思路,而在Linux生态中,通常用System V信号量或POSIX信号量实现相同的并发管控功能,逻辑和SUN阀基本一致,仅内核实现层面有差异。
美国太阳插装阀已经广泛应用于多种工程机械、物料搬运机械和农业机械。在常被忽视的工业领域中,插装阀的应用在不断的扩大。特别是在许多重量和空间的限制的场合中,SUN插装阀大显身手。
SUN浮动式插装阀提供超群的性能,可靠品质以及显着优势。其优点在于其阀尾端的自由浮动,籍此其紧密配合的工作组件,可在阀体内浮动减少其多安装扭矩的敏感度以及避免其内部活动组件卡住的可能。
上海维特锐的SUN产品,直接从美国厂家出货,质量有保障,已为众多客户提供了许多解决方案。
SUN-2189 RE20375 S 15 A 3.X
SUN-219 CBEA-LHN-ZNC/M
SUN-2199 EBA/M 0JN9-AC
SUN-220 CBCA-LIN-Z9U/M
SUN-2200 COFA-XEN
SUN-2201 CW1G-LGN
SUN-2194 CB1/S OJK9 K1
SUN-2195 OKQ9-A2
SUN-2196 MWGA-LHN
SUN-2197 CWCA-LAN
SUN-2198 EBA/M 1AE0-AC
SUN-2202 RE281632 FRM 6 B36-3X/10.0QM/V
SUN-2203 ECB/0FV7-AA
SUN-2204 CSAX-XXN
SUN-2205 CKBB-XAN
SUN-2190 AB 21-20 G 3/4-315-G
SUN-2191 CKEB-BCN
SUN-2192 RPIC-LBN
SUN-2193 FBA/M 0KP9-A2
SUN-2206 CSAX-XXN
SUN-2207 CXBA-XAN
SUN-2208 RDHA-LAV
美国SUN插装阀原装效果好