Russian Qt Forum
Ноябрь 24, 2024, 18:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Пара общих вопросов про QThread.  (Прочитано 2674 раз)
Sokoloff
Гость
« : Ноябрь 06, 2009, 14:19 »

Хочется прояснить для себя пару вопросов про QThread
1) Имею класс вида
Код
Python
class myThread(QThread):
 def __init__(self, param):
   QThread.__init__(self)
   self._param = param
 
 def myFunc(self):
   "long operation used self._param"
 
 def run(self):
   self.myFunc()
 

В каком потоке будет запущена функция myFunc? C одной стороны она вызывается из run, с другой стороны, объект создавался в основном потоке.

2. Скажем есть такой класс - пускатель потоков
Код
Python
class myClass(QObject):
 def __init__(self):
   QObject.__init__(self)
   self.threadsCount = 0
 
 def startThread(self):
   thread = myThread()
   self.connect(thread, SIGNAL("finished()"), self.threadFinished)
   self.threadsCount += 1
   thread.start()
 
 def threadFinished(self):
   self.threadsCount -= 1
 

Надо защищать переменную threadsCount мютексами? Или т.к. сигналы в данном случае ассинхронные, то это не нужно?
 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 06, 2009, 14:45 »

В каком потоке будет запущена функция myFunc? C одной стороны она вызывается из run, с другой стороны, объект создавался в основном потоке.
В созданной thread

Надо защищать переменную threadsCount мютексами? Или т.к. сигналы в данном случае ассинхронные, то это не нужно?
Нет, т.к. счетчик обновляется в одной и той же thread (там где запущен пускатель)
Записан
Sokoloff
Гость
« Ответ #2 : Ноябрь 06, 2009, 15:13 »

Спасибо!
Вы меня несказанно обрадовали Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.