RLock (re-entrant lock) is a type of lock that allows the holder of the lock to acquire it multiple times without causing a deadlock. This can be useful in situations where a thread needs to acquire the same lock multiple times while performing some operation.
Note: If a code can be safely called again, it is re-entrant. In other words, re-entrant code can be called multiple times and still function correctly even if called by different threads. As a result, the re-entrant section of code typically uses local variables only in such a way that each call to the code receives its own unique copy of data.
Re-entrant code:
def f(i): return i + 2
def h(i): return f(i) + 2;
Normal Lock objects can only be obtained once, even by the same thread. If a lock is accessed by more than one function in the same call chain, this can have unintended consequences:
Example:
import threading
lock = threading.Lock()
print 'First try :', lock.acquire()
print 'Second try:', lock.acquire()
print "print this if not blocked..."
Output:
First try : True
Second try:
So, as in the example above, in a situation where separate code from the same thread needs to “re-acquire” the lock, we need to use threading.RLock instead of simple threading.Lock():
import threading
lock = threading.RLock()
print 'First try :', lock.acquire()
print 'Second try:', lock.acquire(0)
Output:
First try : True
Second try: 1
The output shows that we’re able to “re-acquire” the lock.
Note: also read about Lock Object in Python
Please follow me to read my latest post on programming and technology if you like my post.
https://www.instagram.com/coderz.py/
https://www.facebook.com/coderz.py
Staying up to the mark is what defines me. Hi all! I’m Rabecca Fatima a keen learner, great enthusiast, ready to take new challenges as stepping stones towards flying colors.
You are given a stream of elements that is too large to fit into memory.…
The formula for the area of a circle is given by πr². Use the Monte…
Given an integer k and a string s, write a function to determine the length…
There is a staircase with N steps, and you can ascend either 1 step or…
Build an autocomplete system that, given a query string s and a set of possible…
Design a job scheduler that accepts a function f and an integer n. The scheduler…