For further information, please refer to the following:
- A semaphore is similar to a mutex but allows for an arbitrary number of locks to be taken rather than just a single lock. You can read more about Qt's implementation, the QSemaphore class, at https://www.youtube.com/watch?v=Obt-vMVdM8s, provides deeper insight into the operation of the Python GIL