Categories: python

RLock Object in Python

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

Follow Me

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

Recent Posts

What is object oriented design patterns

A design pattern is a reusable solution to a commonly occurring problem in software design. They…

4 months ago

Factory Method Design Pattern in OODP

Factory Method is a creational design pattern that deals with the object creation. It separates…

4 months ago

Find Intersection of Two Singly Linked Lists

You are given two singly linked lists that intersect at some node. Your task is…

10 months ago

Minimum Cost to Paint Houses with K Colors

A builder plans to construct N houses in a row, where each house can be…

10 months ago

Longest Absolute Path in File System Representation

Find the length of the longest absolute path to a file within the abstracted file…

10 months ago

Efficient Order Log Storage

You manage an e-commerce website and need to keep track of the last N order…

11 months ago