Single Producer Single Consumer Lock-free FIFO From the Ground Up## +23 ## Single Producer Single Consumer Lock-free FIFO From the Ground Up CHARLES FRASCH Charlie Frasch charles.frasch@gmail.com Senior Core Developer - IEX Group https://www.iex.io/ Code at: https://github Single Producer Single Consumer Lock-Free Wait-Free Fifo - Single producer: one producer (aka writer) thread - Single consumer: one consumer (aka reader) thread - Lock-free: it doesn’t use mutex locks. Pikus Taking a Byte Out of C++ - Avoiding Punning by Starting Lifetimes - Robert Leahy Awesome Lock-Free - Erik Rigtorp What is Low Latency C++? (Part 1) - Timur Doumler - CppNow 2023 What is Low Latency0 码力 | 51 页 | 546.30 KB | 1 年前3
Lock-Free Atomic Shared Pointers Without a Split Reference Count? It Can Be Done!## +23 ## Lock-free Atomic Shared Pointers Without a Split Reference Count? It Can Be Done! DANIEL ANDERSON  Daniel Anderson Deferred reclamation, i.e., garbage collection in C++ ## Some assumed knowledge • You’ve heard of lock-free programming and know what a compare_exchange is • You know roughly what atomic does and what it Deferred reclamation, i.e., garbage collection in C++ ## Some assumed knowledge • You’ve heard of lock-free programming and know what a compare_exchange is • You know roughly what atomic does and what it0 码力 | 45 页 | 5.12 MB | 1 年前3
When Lock-Free Still Isn't Enough: An Introduction to Wait-Free Programming and Concurrency Techniques## +24 ## When Lock-Free Still Isn’t Enough: An Introduction to Wait-Free Programming and Concurrency Techniques DANIEL ANDERSON ; handle.wait(); // no benefit } ## Aside: Non-Blocking vs Lock-free In lots of cases, short-term blocking (e.g. with short-lived std::mutex locks) is OK. ⇒ for those those cases, Non-Blocking means Not waiting for a lengthy task to run. ## Aside: Non-Blocking vs Lock-free In lots of cases, short-term blocking (e.g. with short-lived std::mutex locks) is OK. ⇒ for those but one thread at any point, that one thread will complete its task. ⇒ for those cases, you need Lock-free allocators, message queues, etc. ## How do we move work off the current thread? How ## How do we0 码力 | 90 页 | 6.97 MB | 1 年前3
CppCon 2021: Persistent Data Structures|000|00000|00000||| |000|000|00000||| ## Persistent concurrent hash Map (PMap) ## Non-volatile ## Lock-free Guaranteed system-wide progress Scales up with multiple threads ## Open addressing In-place |000|00000|00000||| |000|000|00000||| ## Resizing ## ▶ Adapted from Cliff Click’s hash map [14] Lock-free resizing is challenging ▶ Keys and values are separate atomics ▶ Partial operations are possible |000|000000|000000||| |000|0000|000000||| ## Related Works Compared ## ▶ Concurrent level hashing (level) Lock-free Open addressing (of pointers) ▶ Resize (but only expansion) OneFile hash map (OneFile) Wait-free0 码力 | 56 页 | 1.90 MB | 1 年前3
The Roles of Symmetry And Orthogonality In DesignSystem/Subsystem Design (Defines API boundaries and behavior) Implementation details (e.g., “lock-free” and “wait-free” algorithms provide guarantees for system-wide or per-thread progress) ## Levels System/Subsystem Design (Defines API boundaries and behavior) Implementation details (e.g., “lock-free” and “wait-free” algorithms provide guarantees for system-wide or per-thread progress) Examples: System/Subsystem Design (Defines API boundaries and behavior) • Implementation details (e.g., “lock-free” and “wait-free” algorithms provide guarantees for system-wide or per-thread progress) Examples:0 码力 | 151 页 | 3.20 MB | 1 年前3
Interesting Upcoming Features from Low Latency, Parallelism and Concurrencyintegrity. Efficient and safe concurrent updates to shared variables. Enable the implementation of lock-free data structures, leading to improved performance and scalability. Useful in various applications in data-parallel algorithms, statistics collection, and optimization processes. Useful for: • Lock-free data structures • Parallel reductions (OpenMP) • Optimization algorithms • Statistics collection0 码力 | 56 页 | 514.85 KB | 1 年前3
Rust原子操作高性能实践 Rust Atomic Deep Dive - 王璞fetch_and(&self, val: bool, order: Ordering) -> bool ## Why Atomic Operation? High Performance Lock-free programming Shared Variable Access When Multi-threading Lock - context switch Atomic - no context0 码力 | 19 页 | 1.88 MB | 2 年前3
使用硬件加速Tokio - 戴翔jpg) Hardware DLB-Assist Channel removes the penalty of CAS to achieve a safety-guaranteed, lock-free and scalable channel. ## DLB-Assist Channel Overview Producer Consumer Senders Message-Ownership0 码力 | 17 页 | 1.66 MB | 2 年前3
2.Go语言实现中的几个研究课题_毛康力按channel结构体的地址顺序加锁  - 研究课题:能否实现lock-free channels? ## 大纲 - 并发 - 接口 - 垃圾回收 - 调度 - 死锁检测 ## 接口 • 接口定义了一系列方法 - 如果类型实现了这些方法,它就实现了这个接口0 码力 | 37 页 | 566.26 KB | 2 年前3
共 136 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
相关搜索词
Single Producer Single ConsumerLock-freeFIFOPerformance OptimizationFalse Sharing原子共享指针锁-free拆分引用计数基准测试递延回收Wait-free programmingLock-free programmingConcurrency techniquesHelping mechanismProgress guaranteesbackground threadsspawn a new threaddedicated background threadthread poolevent handlerPersistent Data StructuresConcurrencyPersistenceTransactional MemoryOptane Persistent Memory对称性正交性设计关系系统耦合设计优雅C++并行算法原子min/max并行范围算法并发编程原子操作内存模型缓存一致性无锁编程指数回退Tokio硬件加速通道调度器性能差距垃圾回收并发接口调度死锁检测













