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

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

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: операции в слотах тормозят GUI  (Прочитано 2399 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Online Online

Сообщений: 5535


Жаждущий знаний


Просмотр профиля
« Ответ #30 : Декабрь 12, 2016, 14:44 »

а в воркере будут доступны переменные из главного класса, ну в каком я его запустил?

да, передай указатель и защити мутексом

Вот не надо херню советовать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
-------------------------------
https://twitter.com/panter_dsd
https://facebook.com/panter.dsd
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 9479


Просмотр профиля
« Ответ #31 : Декабрь 12, 2016, 14:51 »

Вообще "вынос в поток" - мода довольно молодая. Раньше как-то спокойно обходились вторичным циклом - и все работало в одной нитке
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Online Online

Сообщений: 5535


Жаждущий знаний


Просмотр профиля
« Ответ #32 : Декабрь 12, 2016, 14:55 »

Вообще "вынос в поток" - мода довольно молодая. Раньше как-то спокойно обходились вторичным циклом - и все работало в одной нитке
Ты имеешь ввиду processEvents?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
-------------------------------
https://twitter.com/panter_dsd
https://facebook.com/panter.dsd
qate
Хакер
*****
Online Online

Сообщений: 604


Просмотр профиля
« Ответ #33 : Декабрь 12, 2016, 16:44 »

а в воркере будут доступны переменные из главного класса, ну в каком я его запустил?

да, передай указатель и защити мутексом

Вот не надо херню советовать.

мутекс не нужен считаешь ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Online Online

Сообщений: 5535


Жаждущий знаний


Просмотр профиля
« Ответ #34 : Декабрь 12, 2016, 18:50 »

Я считаю что не надо шарить указатели между классами, а тем более потоками.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
-------------------------------
https://twitter.com/panter_dsd
https://facebook.com/panter.dsd
kuzulis
Джедай : наставник для всех
*******
Online Online

Сообщений: 2509


Просмотр профиля
« Ответ #35 : Декабрь 12, 2016, 19:35 »

QtConcurrent::Run еще не советовали?  Строит глазки
Записан

ArchLinux x86_64 / Win10 64 bit
qate
Хакер
*****
Online Online

Сообщений: 604


Просмотр профиля
« Ответ #36 : Декабрь 12, 2016, 20:49 »

Я считаю что не надо шарить указатели между классами, а тем более потоками.

указатель на класс это плохо ?
http://doc.qt.io/qt-5/qsharedpointer.html тоже ненужен ?
а мутексы для того и нужны, чтобы иметь доступ к памяти из разных потоков
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Online Online

Сообщений: 5535


Жаждущий знаний


Просмотр профиля
« Ответ #37 : Декабрь 12, 2016, 21:15 »

qate, если можно обойтись без мютекса, то лучше это сделать. Давай попробую тебе объяснить аллегорически. Представь, что переменная - это женщина. Если женщиной владеет один мужчина, то это отлично. Если два, то могут быть конфликты (которые потом могут проходить по УК РФ). Но если мужчин становится слишком много, можно чего-нибудь подхватить не того. Тебе оно надо?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
-------------------------------
https://twitter.com/panter_dsd
https://facebook.com/panter.dsd
qate
Хакер
*****
Online Online

Сообщений: 604


Просмотр профиля
« Ответ #38 : Декабрь 12, 2016, 21:54 »

Давай попробую тебе объяснить аллегорически.

Боже мой, какие фантазии!

Расскажи - как обойтись без мутексов при доступе к общим данным из 2+ потоков ?

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Online Online

Сообщений: 5535


Жаждущий знаний


Просмотр профиля
« Ответ #39 : Декабрь 12, 2016, 22:08 »

Давай попробую тебе объяснить аллегорически.

Боже мой, какие фантазии!

Расскажи - как обойтись без мутексов при доступе к общим данным из 2+ потоков ?



Закрой глаза и я тебе расскажу. Только тсссссс. Закрыл? Не подглядывай! Легко обойтись без мютексов если.... НЕ ОБРАЩАТЬСЯ К ОБЩИМ ДАННЫМ ИЗ 2+ ПОТОКОВ!!! Эврика, мать его.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
-------------------------------
https://twitter.com/panter_dsd
https://facebook.com/panter.dsd
qate
Хакер
*****
Online Online

Сообщений: 604


Просмотр профиля
« Ответ #40 : Декабрь 12, 2016, 22:51 »

НЕ ОБРАЩАТЬСЯ К ОБЩИМ ДАННЫМ ИЗ 2+ ПОТОКОВ!!! Эврика, мать его.

ты вообще понимаешь глупость своего утверждения ?

общие данные на то и "общие", что к ним идет обращение их 2+ потоков, иначе они частные
Записан
megido
Новичок

Offline Offline

Сообщений: 46


Просмотр профиля
« Ответ #41 : Декабрь 12, 2016, 23:40 »

у меня что-то стала зависать отрисовка гуи. через короткое время после запуска гуи перестает отрисовыватся.
программа работает,ничего не висит, я даже могу двигать слайдер(каторый не перемещается).
ошибок не выдает, если перезапустить процесс или нажать на какую нибудь кнопку  все станет нормально, но через секунд 5 опять перестанет отрисовывать.
данные для отрисовки идут,вижу в логах
 куда копать?
а я кажется понял, походу нельзя рисовать гуи в потоке, опять сигналы со слотами городить(((
« Последнее редактирование: Декабрь 12, 2016, 23:57 от megido » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2320

чтоб работа волком не казалась :)


Просмотр профиля WWW
« Ответ #42 : Декабрь 13, 2016, 00:17 »

Зачем воркеру мутекс? Воркер при инициализации получит данные, настроит свои локальные переменные (это все в "главном" потоке еще), а потом start() и пошло поехало.

А вообще, по теме - непонятно, какая цель у автора? Какие-то слоты, треды, гуй теперь еще образовался...
Сделать то что надо?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

http://sintegrial.com - всякий хороший Qt софт (был Грустный )
Пантер
Administrator
Джедай : наставник для всех
*****
Online Online

Сообщений: 5535


Жаждущий знаний


Просмотр профиля
« Ответ #43 : Декабрь 13, 2016, 08:28 »

ты вообще понимаешь глупость своего утверждения ?

общие данные на то и "общие", что к ним идет обращение их 2+ потоков, иначе они частные

Чувак, ты походу не понял мой пример. С одной женщиной должен быть только один мужчина. Тогда никаких проблем не будет. Если мужчин становится несколько, приходится предохраняться (но ощущения уже не те, да и защита не 100%), да еще и разбираться потом чьи дети и кто за них отвечает.
Я не говорю, что таких ситуаций стоит вообще сторониться (есть же проститутки и это нормально, наверное), но не стоит возводить это в привычку.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
-------------------------------
https://twitter.com/panter_dsd
https://facebook.com/panter.dsd
kuzulis
Джедай : наставник для всех
*******
Online Online

Сообщений: 2509


Просмотр профиля
« Ответ #44 : Декабрь 13, 2016, 08:35 »

Цитировать
С одной женщиной должен быть только один мужчина.

А если женщины делят одного мужика - то это как? Мутексы нужны?  Подмигивающий
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  

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