src/eric7/EricUtilities/EricMutexLocker.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
diff -r 3fc8dfeb6ebe -r b99e7fd55fd3 src/eric7/EricUtilities/EricMutexLocker.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/EricUtilities/EricMutexLocker.py	Thu Jul 07 11:23:56 2022 +0200
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2020 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a context manager locking and unlocking a mutex.
+"""
+
+import contextlib
+
+
+class EricMutexLocker(contextlib.AbstractContextManager):
+    """
+    Class implementing a context manager locking and unlocking a mutex.
+    """
+    def __init__(self, mutex):
+        """
+        Constructor
+        
+        @param mutex reference to the mutex to be locked
+        @type QMutex or QRecursiveMutex
+        """
+        self.__mutex = mutex
+    
+    def __enter__(self):
+        """
+        Special method called when entering the runtime ccontext.
+        
+        @return reference to the context manager object
+        @rtype EricOverrideCursor
+        """
+        self.__mutex.lock()
+        
+        return self
+    
+    def __exit__(self, exc_type, exc_value, traceback):
+        """
+        Special method called when exiting the runtime ccontext.
+        
+        @param exc_type type of an exception raised in the runtime context
+        @param exc_value value of an exception raised in the runtime context
+        @param traceback traceback of an exception raised in the runtime
+            context
+        @return always returns None to not suppress any exception
+        @rtype None
+        """
+        self.__mutex.unlock()
+        
+        return None     # __IGNORE_WARNING_M831__

eric ide

mercurial