Web Analytics
yangyang

码农兼一个普普通通小青年

AutoResetEvent


股票行情处理的性能优化与实践

本文针对高频交易与极速行情系统中的“生产者-消费者”队列同步机制,以行情处理模块为例,剖析了四代架构的性能优化实践。最初基于 ConcurrentQueue 与 AutoResetEvent 的方案存在频繁的用户态至内核态切换开销,导致严重的算力浪费。为规避此瓶颈,系统先后引入了 .NET 的 BlockingCollection 以及基于 SemaphoreSlim 的定制方案,通过自旋等待(SpinWait)与轻量级信号量大幅降低了内核调度频率,但由于严格的计数映射,引入了冗余的状态维护成本。最终,系统采用 ManualResetEventSlim 进行重构,剥离了计数包袱,实现了状态同步的O(1) 极低开销。基准测试表明,采用轻量级无锁同步架构,相较于传统内核级锁,吞吐量耗时降低逾 37%。本文给出了每一阶段的演进代码与底层原理分析,为构建低延迟吞吐系统提供了参考。 …

AutoResetEvent ConcurrentQueue BlockingCollection SemaphoreSlim ManualResetEventSlim BenchmarkDotNet Producer-Consumer Model HFT

C#中的线程同步构造:用户模式构造和内核模式构造

当多个线程同时访问共享数据对象时,就需要线程同步,以保证数据状态不会被破坏。线程同步的通常做法是加“锁”,以保证某一时刻只有拥有这个锁的对象才能够去操作数据。加“锁”能够保证共享数据不会被破坏,但是它增加了代码的复杂性,并且有时候不容易测试和重现。另外“锁”增加了系统开销,会损害系统性能。本文介绍了C#中的基元用户模式构造和基元内核模式构造两类基本类型构造,并详细介绍了在C#中的实现。 …

ManualResetEvent user-mode kernel-mode volatile interlocked OCC WaitHandle AutoResetEvent Semaphore Mutex

  • 1