Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос касательно QThread, Как лучше сделать? 
:(
    Опции темы
Lindemann66
  Дата 8.9.2011, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Всем привет!

Всего 1 маленький вопрос

Есть класс, который обеспечивает работу (не важно, какую) - допустим, Worker

Есть много потоков - QThread

Есть ли что-то плохое в том, если 
создать 1 указатель *worker
и передать его во все потоки через конструктор, а затем вызывать у него операции?

То есть, по сути, 1 объект на все потоки?
Или же лучше в каждом потоке создать свой *worker, и использовать его?

Но это ведь не оптимально, так как можно в 1 месте создать, и использовать везде?

В-общем, такой вопрос

Буду благодарен за любые ответы.
--------------------
stay true
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 8.9.2011, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Lindemann66

Все очень сильно зависит от того, что именно будет делать твой класс Worker. Доступ к общим данным из нескольких потоков необходимо синхронизировать, так-как параллельная модификация объекта может привести к неопределенному результату. Если операции класса Worker затрагивают общие данные, то сам класс должен быть потокобезопасным, т.е. должен обеспечивать необходимую синхронизацию. Синхронизацию конечно можно обеспечить извне (т.е. при вызове самих функций из потоков), но в большинстве случаев это не позволит добиться максимальной эффективности, так-как у тебя нет доступа к внутренней структуре класса.

П.С. если термины синхронизация, mutex, атомарность тебе ни о чем не говорят, то думаю лучше на данный момент оставить эту задачу и взяться за чтение какой нибудь книги по многопоточному программированию.

Это сообщение отредактировал(а) azesmcar - 8.9.2011, 11:04
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.