lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706

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

09.03.2014, 07:51. Показов 4189. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru