One of the most common ways to apply thread synchronization is through the implementation of a locking mechanism. In our threading module, the threading.Lock class provides a simple and intuitive approach to creating and working with locks. Its main usage includes the following methods:
- threading.Lock(): This method initializes and returns a new lock object.
- acquire(blocking): When this method is called, all of the threads will run synchronously (that is, only one thread can execute the critical section at a time):
- The optional argument blocking allows us to specify whether the current thread should wait to acquire the lock
- When blocking = 0, the current thread does not wait for the lock and simply returns 0 if the lock cannot be acquired by the thread, or 1 otherwise
- When blocking = 1, the current thread blocks and waits for the lock to be released and acquires it afterwards
- release(): When this method is called, the lock is released.