Найти - Пользователи
Полная версия: QMutex и области видимости..
Начало » Python для новичков » QMutex и области видимости..
1
mironich
Есть класс пула потоков:
class ThreadPool(QObject):
    thread_count_changed = pyqtSignal(int)
    def __init__(self, thr_class, need_mutex = True):
        '''
        Ключевые аргументы:
        thr_class - Ссылка на класс  потока
        Необязательные аргументы:
        need_mutex = True Нужен ли мьютекс
        '''
        QObject.__init__(self)
        if need_mutex:
            self.mutex = QMutex()
        else:
            self.mutex = None
        self.thr_class = thr_class
def init_pool(self, count = 1, other_params = {}):
        '''
        Инициализирует пул потоков.
        Необязательные аргументы:
        count = 1 - Количество потоков.
        other_params = {} Хэш в котором ключ это атрибут класса потока,
        а значение значения для данного атрибута класса потока.
        '''
        for sch in range(count):
            if not self.mutex is None:
                self.pool.append(self.thr_class(self.mutex)) #Передача ссылки на мьютекс в поток
Прочитал что для того чтобы QMutex работал необходимо, обьявлять Mutex так.
class MyThread(QtCore.QThread):
    mutex = QtCore.QMutex()
Получаеться в моем классе мьютекс не работает?
И если у кого есть скиньте линк на полный список атомарных операций в python
mironich
Отвечу на свой же вопрос…
Получаеться в моем классе мьютекс не работает?
Работал т.к создавался в единственном экземпляре и передавались потокам ссылки.
class MyThread(QtCore.QThread):
    mutex = QtCore.QMutex()
В этом коде объявляется как атрибут инстанса , соответсвенно при создании обьекта класса MyThread у каждого обьекта будет один и тот же мьютекст т.к обьявлен как атрибут инстанса.
Правильно?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB