![]() |
|
![]() ![]() ![]() |
|
Lindemann66 |
|
|||
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
Всем привет!
Всего 1 маленький вопрос Есть класс, который обеспечивает работу (не важно, какую) - допустим, Worker Есть много потоков - QThread Есть ли что-то плохое в том, если создать 1 указатель *worker и передать его во все потоки через конструктор, а затем вызывать у него операции? То есть, по сути, 1 объект на все потоки? Или же лучше в каждом потоке создать свой *worker, и использовать его? Но это ведь не оптимально, так как можно в 1 месте создать, и использовать везде? В-общем, такой вопрос Буду благодарен за любые ответы. --------------------
stay true |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Lindemann66
Все очень сильно зависит от того, что именно будет делать твой класс Worker. Доступ к общим данным из нескольких потоков необходимо синхронизировать, так-как параллельная модификация объекта может привести к неопределенному результату. Если операции класса Worker затрагивают общие данные, то сам класс должен быть потокобезопасным, т.е. должен обеспечивать необходимую синхронизацию. Синхронизацию конечно можно обеспечить извне (т.е. при вызове самих функций из потоков), но в большинстве случаев это не позволит добиться максимальной эффективности, так-как у тебя нет доступа к внутренней структуре класса. П.С. если термины синхронизация, mutex, атомарность тебе ни о чем не говорят, то думаю лучше на данный момент оставить эту задачу и взяться за чтение какой нибудь книги по многопоточному программированию. Это сообщение отредактировал(а) azesmcar - 8.9.2011, 11:04 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |