New RCU of Section 5 in Concurrent Updates with RCU: Search Tree as an Example
In our implementation, each thread has a counter and flag, the counter counts the number of critical sections executed by the thread and a flag indicates if the thread is currently inside its read-side critical section. The rcu_read_lock operation increments the counter and sets the flag to true, while the rcu_read_unlock operation sets the flag to false. When a thread executes a synchronize_rcu operation, it waits for every other thread, until one of two things occurs either the thread has increased its counter or the thread’s flag is set to false. The main advantage of this implementation is that multiple threads executing synchronize_rcu need not coordinate among themselves, and they do not acquire any locks.
User level RCU library
new-urcu.c
)new-urcu.c
이후 버전)Description of new-urcu implementation
New RCU of Section 5
in Concurrent Updates with RCU: Search Tree as an Examplercu_read_lock
operation increments the counter and sets the flag to true, while thercu_read_unlock
operation sets the flag to false. When a thread executes asynchronize_rcu
operation, it waits for every other thread, until one of two things occurs either the thread has increased its counter or the thread’s flag is set to false. The main advantage of this implementation is that multiple threads executingsynchronize_rcu
need not coordinate among themselves, and they do not acquire any locks.