posted on 2020-05-01, 00:00authored byClaudio Montanari
Modern programming paradigms heavily rely on the concept of parallel programming and multi-threading. As a consequence, it has been possible to observe an increase in the need to efficiently communicate, synchronize and share data structures between threads. Conventional synchronization mechanisms are based on the concept of locking. In general, such approaches have an advantage when there is low contention over the lock; while, on the other hand, under conditions of high contention, delegation as Fast Fly Weight Delegation has been proven to provide better performance in terms of both throughput and latency.
Nevertheless, State Of the Art implementation of delegation as Gepard requires to dedicate one, or possibly more, cores to act as servers (the concept of server and how delegation works are going to be explained in the following Chapters). Often such servers are not very busy, instead they are just busy-waiting, until some work arrives.
We show how this limitation can be bypassed in designated delegation with little or no overhead and how our solution enables for an efficient implementation of a variation of standard delegation: flat delegation.
We evaluate designated and flat delegation on a Fetch-And-Add benchmark under different load conditions and report latency and throughput results comparing against Gepard and conventional lock mechanisms.