Nonblocking Concurrent Objects with Condition Synchronization", by W. N. Scherer III and M. L. Scott. 18th Annual Conf. on Distributed Computing, Oct. 2004
http://www.cs.rochester.edu/u/scott/synchronization/pseudocode/duals.html
写道
Pseudocode from article of the above name in DISC'04. Michael L. Scott and William N. Scherer III.
The dualstack is derived from the non-dual version due to Treiber. [R. K. Treiber. Systems Programming: Coping with Parallelism. RJ 5118, IBM Almaden Research Center, April 1986.] Satisfies pending requests in LIFO order using a mechanism in which adjacent reservation and data nodes “annihilate” each other. Assumes the availability of a double-width CAS instruction, to avoid the ABA problem; could easily use single-width LL/SC instead. Spinning threads impose no contention on either cache-coherent or non-cache-coherent machines.
The dualqueue is derived from the non-dual version due to Michael and Scott. Takes its name from the firmware-supported dualqueues of the c.1982 BBN Butterfly Parallel Processor. Satisfies pending requests in FIFO order. Assumes the availability of a double-width CAS instruction, to avoid the ABA problem; could easily use single-width LL/SC instead. Spinning threads impose no contention on a cache-coherent machine; an extra level of indirection would be required on non-cache-coherent machines.
The dualqueue constitutes, trivially, a previously unknown queue-based mutual exclusion lock. When initialized with k items it constitutes a contention-free spin-based semaphore. When paired with a test-and-set lock it provides a “limited contention” spin lock that balances fairness against locality on a distributed memory machine.
The dualstack is derived from the non-dual version due to Treiber. [R. K. Treiber. Systems Programming: Coping with Parallelism. RJ 5118, IBM Almaden Research Center, April 1986.] Satisfies pending requests in LIFO order using a mechanism in which adjacent reservation and data nodes “annihilate” each other. Assumes the availability of a double-width CAS instruction, to avoid the ABA problem; could easily use single-width LL/SC instead. Spinning threads impose no contention on either cache-coherent or non-cache-coherent machines.
The dualqueue is derived from the non-dual version due to Michael and Scott. Takes its name from the firmware-supported dualqueues of the c.1982 BBN Butterfly Parallel Processor. Satisfies pending requests in FIFO order. Assumes the availability of a double-width CAS instruction, to avoid the ABA problem; could easily use single-width LL/SC instead. Spinning threads impose no contention on a cache-coherent machine; an extra level of indirection would be required on non-cache-coherent machines.
The dualqueue constitutes, trivially, a previously unknown queue-based mutual exclusion lock. When initialized with k items it constitutes a contention-free spin-based semaphore. When paired with a test-and-set lock it provides a “limited contention” spin lock that balances fairness against locality on a distributed memory machine.
相关推荐
We present a pragmatic methodology for designing nonblocking real-time systems. Our methodology uses a combination of lock-free and wait-free synchronization techniques and clearly states which ...
标题中的"nonblocking async transfer server"指的是一个非阻塞异步传输服务器,这种服务器设计模式在高并发、高性能的场景下特别有用。它利用了非阻塞I/O模型,使得服务器在等待数据读写时不会被挂起,而是立即返回...
博主的博客Verilog之blocking & nonblocking assignments有些内容是参考了这篇英文文献的,其中对verilog中有关阻塞与非阻塞赋值语句的8种准则进行了详细的举例说明,读者可以下载文章进行详细阅读,以便更好地理解...
本文件"1996-CUG-presentation_nonblocking_assigns的副本.pdf"是一个关于这些主题的详细PPT,尽管篇幅不长,但内容深入,有助于清晰地理解这两个概念。 1. **阻塞赋值(Blocking Assignment)**:在Verilog中,`=`...
总结来说,"nonblocking server"是指采用非阻塞I/O模型的服务器,这种模式能够处理大量并发连接,提高系统性能。通过引入MurmurHash3,服务器可以快速处理数据并降低冲突。HTTP状态的打印有助于监控服务器状态,而...
We experimentally demonstrate a 4 × 4 nonblocking silicon thermo-optic (TO) switch fabric consisting of three stages of tunable generalized Mach–Zehnder interferometers. All 24 routing states for ...
"nonblocking switch server" 是一个基于非阻塞网络模型的服务器设计,其核心目标是提高系统并发处理能力,降低响应时间,实现高效的数据传输。在描述中提到的 "fix bugs when packets are too large" 指的是在处理...
压缩包中的“02_nonblocking_assignment”文件很可能是包含了相关示例代码和仿真脚本,用于演示如何使用非阻塞赋值以及对比阻塞赋值的效果。通过运行这些例子,我们可以更直观地了解非阻塞赋值如何影响设计的行为和...
非阻塞通信是一种高效、灵活的网络编程方式,它与传统的阻塞通信模式不同,能够显著提高系统的并发处理能力。在Java中,非阻塞通信主要通过NIO(Non-blocking Input/Output,非阻塞输入/输出)实现,这是一种基于...
async with server: await server.serve_forever() if __name__ == "__main__": asyncio.run(server()) ``` 这个例子展示了如何创建一个非阻塞的TCP服务器,它能同时处理多个客户端连接,而无需为每个连接创建...
Memory Leak in the NonBlocking mode is fixed SQLServer data provider Bug with incorrect committing of data by the Loader component on errors is fixed MySQL data provider Bug with connecting in ...
文档的内容涉及非阻塞并发数据结构(Nonblocking Concurrent Data Structures)以及条件同步(withConditionSynchronization)。作者是William N. Scherer III和Michael L. Scott,来自罗切斯特大学计算机科学系。...
概述非阻塞词典: NonBlocking词典与ConcurrentDictionary具有相同的API。 在任何操作(包括获取,添加,删除,内部调整大小等)期间都不会获取任何锁定。 虽然多个线程访问NonBlocking词典将在诸如调整表大小之类...
标题中的“tcp网络调试助手”是一款专为TCP网络通信设计的辅助工具,它允许用户便捷地设置服务端和客户端,以便进行数据的发送与接收。TCP(Transmission Control Protocol)是互联网协议栈中的一种面向连接的、可靠...
We experimentally demonstrate a 16 × 16 reconfigurably nonblocking optical switch fabric using a Benes architecture. The switch fabric consists of 56 2 × 2 Mach–Zehnder interferometer based ...
access controllers, address management, and a nonblocking switch fabric into a single 0.13 µm CMOS device. The BCM5396 complies with IEEE 802.3, 802.3u, 802.3ab, and 802.3x specifications, including ...