All problems
Lock-Free Ring Buffer Reserve/Commit
Problem
Simulate reserve and commit on a lock-free ring buffer.
capacity is the number of slots. operations contains "reserve" (values[i] is stored at the next free slot and the reservation succeeds only while outstanding reservations fit), "commit" (make the oldest reservation visible to consumers), or "consume" (record the oldest committed value, or None).
Return the list of recorded results (None for commit).
Hint
A consumer can only see slots whose reservations have been committed.
Test cases
case 1
in: [2,["reserve","commit","reserve","commit","consume","consume"],[7,0,8,0,0,0]]
expected: [true,null,true,null,7,8]
case 2
in: [1,["reserve","reserve","commit","consume"],[5,6,0,0]]
expected: [true,false,null,5]
case 3
in: [1,["consume"],[0]]
expected: [null]
case 4
in: [2,["reserve","commit","reserve","consume","consume"],[1,0,2,0,0]]
expected: [true,null,true,1,null]
Starter codePython
def ring_reserve_commit(capacity, operations, values):
# Your code here
pass4 test cases · run your code against them in the editor