Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706

Методы объектов одного класса, находящихся в разных потоках

09.03.2014, 07:51. Показов 4059. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть class Worker : public QObject, в нём - слот process(). Создаётся несколько объектов QThread и несколько объеков Worker. Каждый объект Worker, с помощью moveToThread(), помещается в свой поток. Метод process(), у этих объектов, общий или у каждого свой?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2014, 07:51
Ответы с готовыми решениями:

как использовать методы класса в разных потоках?
Пишу программу для обмена данными с usb hid устройством. Чтобы получать данные от устройства в любой момент и не вешать главное окно, решил...

C++ занесение структур находящихся в разных потоках, в общую очередь
Весь код приводить не стал, надеюсь идея будет понятна. Я циклом создал потоки а теперь, нужно структуры (Clien), которые в этих потоках...

rand() при создании разных объектов одного класса в них одинаков
создаю динамическую матрицу в объекте, заполняемую рандомно, в каждом объекте одно и то же заполнение, как грамматно исправить? ...

29
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
10.03.2014, 03:14  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
Что вы имеете ввиду под разными (методами) слотами ?
Для начала:
Цитата Сообщение от Jupiter Посмотреть сообщение
а что такое методы? в с++ нет понятия метод, есть функция-член :trollface:
и эта функция-член метод как и обычная функция хранится в памяти в одном экземпляре.
Слот та же функция (метод).
Всем известно, что объекты класса используют общие (одна копия на весь класс) методы. Я это назвал совместно используемый ресурс. Jupiter, говорит, что неправильно, совместно используемый - это указатель this. Как ни назови, все объекты используют один и тот же код методов. Возник вопрос, если объекты находятся в разных потоках они тоже используют один и тот же код методов (одну копию), или для каждого потока, возможно, создаётся своя копия методов? Если одну, то как тогда начёт конфликтов по поводу совместно используемому, разными потоками, ресурсу? Код показывает, что объекты, находящиеся в разных потоках, никак не мешают друг другу для доступа к методу process()(т.е. используют одновременно). Т.е., если первый объект вызвал process() и код перешёл к бесконечному циклу в нём, то это никак не мешает второму объекту зайти в этот же (другой?) бесконечный цикл. Если этот метод в единственном экземпляре, то как это может быть?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.03.2014, 03:19
Метод та один, но вызов при вызове его "относительно" данного объекта используются данные именно этого объекта передаваемые неявно через this.

Цитата Сообщение от lss Посмотреть сообщение
Возник вопрос, если объекты находятся в разных потоках они тоже используют один и тот же код методов (одну копию), или для каждого потока, возможно, создаётся своя копия методов?
Бред ...

Добавлено через 3 минуты
Цитата Сообщение от lss Посмотреть сообщение
Если одну, то как тогда начёт конфликтов по поводу совместно используемому, разными потоками, ресурсу?
Ресурсы разные ибо операции в методе выполняются с разными данными ( в твоем коде вообще не используются данные)
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
10.03.2014, 03:26  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ресурсы разные ибо операции в методе выполняются с разными данными ( в твоем коде вообще не используются данные)
Я не про данные спрашиваю (данныые у каждого объекта свои, пэтому нет вопросов), а про сам метод, который, как-бы, общий у всех объектов класса.
Цитата Сообщение от lss Посмотреть сообщение
Вот это не понимаю. Функции вообще не могут быть общим ресурсом (совместно используемым)? Если из разных потоков идёт обращение к одной и той же функции (не методу), то функция не считается совместно используемым ресурсом? В смысле, что такие обращения никак не мешают друг другу? И без разницы: потокобезопасная данная функция или нет? Или методы - это особый случай?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.03.2014, 03:31
Сам метод общий, сам метод это записанный набор определённых команд ?
Почему он должен быть разным для разных потоков с какого перепугу?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
10.03.2014, 03:54  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Почему он должен быть разным для разных потоков с какого перепугу?
Я, как-бы, это и не утверждал. Другие, правда, говорили:
Цитата Сообщение от RazrFalcon Посмотреть сообщение
У каждого объекта метод process() свой.
Как насчёт этого?
Цитата Сообщение от lss Посмотреть сообщение
Сообщение от lss
Вот это не понимаю. Функции вообще не могут быть общим ресурсом (совместно используемым)? Если из разных потоков идёт обращение к одной и той же функции (не методу), то функция не считается совместно используемым ресурсом? В смысле, что такие обращения никак не мешают друг другу? И без разницы: потокобезопасная данная функция или нет? Или методы - это особый случай?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.03.2014, 03:57
Цитата Сообщение от lss Посмотреть сообщение
Другие, правда, говорили:
Имели ввиду вероятно данные.

Добавлено через 1 минуту
Цитата Сообщение от lss Посмотреть сообщение
Как насчёт этого?
Ф-ция это в данном случае не ресурс.

Всегда стоит вопрос: "при вызове функции из разных потоков будут ли обращение к незащищенным общим данным?"
1
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
10.03.2014, 05:03  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Имели ввиду вероятно данные.
О данных речь вообще не шла, поэтому навряд ли.

Добавлено через 9 минут
Цитата Сообщение от Avazart Посмотреть сообщение
Всегда стоит вопрос: "при вызове функции из разных потоков будут ли обращение к незащищенным общим данным?"
То есть, если функции вообще не используют никаких данных (как, например, в моём коде), то можно сказать, что они всегда потокозащищённые? Т.е., неважно к каким классам они относятся, потокозащищённым, реентерабельным, нереентерабельным?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.03.2014, 05:06
В данном конкретном случае да.
1
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
10.03.2014, 05:13  [ТС]
Пора заканчивать, буду дальше сам разбираться. Благодарю за ответы.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
11.03.2014, 08:59
Цитата Сообщение от lss Посмотреть сообщение
То есть, если функции вообще не используют никаких данных (как, например, в моём коде), то можно сказать, что они всегда потокозащищённые? Т.е., неважно к каким классам они относятся, потокозащищённым, реентерабельным, нереентерабельным?
Если рассуждать Вашими же понятиями, то код (функция в нашем случае) - это "ресурс" только для чтения (read only), тут хоть один поток, хоть несколько - разницы нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2014, 08:59
Помогаю со студенческими работами здесь

Обращение к методам объектов, созданных в разных потоках
Гуд дэй, комрэйдс! Ай хэв э квэштн фор ю! В общем, у меня есть распоточенное приложение на C# WinForms, вкратце: классецы ...

Запуск из кода в разных потоках одного *.EXE
Здравствуйте всем! задание: допустим есть 100 файлов, есть фильтр filter.exe задача: отфильтровать эти 100 файлов в несколько...

Как запустить метод класса одновременно в разных потоках?
Как запустить метод класса одновременно в разных потоках? Будет ли конфликт между ними, или создать несколько экз. класса и в каждом потоке...

Перегрузка операции + с преобразованием объектов одного класса в объекты другого класса
Доброго времени суток! Изучаю ООП, при выполнении следующего задания возникли сложности: Создать класс Polar для хранения полярных...

Массив объектов одного класса как поле другого класса
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив объектов класса из предыдущей лабы и в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru