|
0 / 0 / 0
Регистрация: 04.05.2023
Сообщений: 9
|
||||||
Пул потоков thread09.05.2023, 14:26. Показов 2265. Ответов 14
Метки нет (Все метки)
Здравствуйте.
Изучаю параллельное программирование. С огромным трудом мне дается пул потоков. Решил попробовать написать пул потоков так как я его понимаю, самый простой. Вопрос только один, можно ли это назвать пулом или это ничего общего с ним не имеет и я вообще не правильно мыслю? !!!ОСТОРОЖНО!!! В коде присутствуют артефакты в виде бесполезных переменных, кое что закомментировано, код не причесан, за это прошу меня извинить.
0
|
||||||
| 09.05.2023, 14:26 | |
|
Ответы с готовыми решениями:
14
Есть ли в C++ пул потоков Пул потоков с семафорами
|
|
621 / 379 / 67
Регистрация: 09.03.2016
Сообщений: 4,075
|
||||||
| 09.05.2023, 15:17 | ||||||
|
Что то наворочено... Но оно не работает от слова вообще.
Может у меня конструктор не очень подходит. У вас там ещё --- #include <atomic> нету.... Вы это на телефоне писали? Я слышал, особо гениальные програмисты так делают. Добавлено через 12 минут Я почитал, здесь не всё однозначно, на разных IDE...
https://stackoverflow.com/ques... tomic-bool
1
|
||||||
|
621 / 379 / 67
Регистрация: 09.03.2016
Сообщений: 4,075
|
|
| 09.05.2023, 15:21 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 04.05.2023
Сообщений: 9
|
||||||
| 10.05.2023, 04:23 [ТС] | ||||||
|
Поправил код, убрал все что не важно. Код писал на настоящем компьютере, но своими руками.
Код у меня как и исходный компилируется без ошибок, использую VS 2022. Проверил в онлайн компиляторе onlinegdb.com. Пришлось убрать и windows.h и добавить atomic, чтобы онлайн компилятор его переварил. Онлайн компилятор ID потока както не так показывает. Наталья8 использовал atomic_bool так как вычитал в книге что это альтернатива atomic<bool>.
0
|
||||||
|
621 / 379 / 67
Регистрация: 09.03.2016
Сообщений: 4,075
|
|
| 10.05.2023, 13:28 | |
|
0
|
|
|
621 / 379 / 67
Регистрация: 09.03.2016
Сообщений: 4,075
|
||||||
| 10.05.2023, 15:24 | ||||||
|
У меня MSVS 2013.
Может работать не правильно... Добавлено через 1 час 51 минуту Примерчик попроще, для разнообразия. https://cplusplus.com/referenc... ead/yield/
Добавлено через 2 минуты Была вот такая тема.... И что то толку с неё ноль... std::thread - как запустить поток отложенно?
0
|
||||||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 869
|
|
| 10.05.2023, 15:48 | |
|
тест сделайте нормальный - чтоб накладные расходы показал
0
|
|
|
0 / 0 / 0
Регистрация: 04.05.2023
Сообщений: 9
|
|
| 10.05.2023, 16:03 [ТС] | |
|
Наталья8 и Aledveu, вопрос у меня только один, можно ли дать точное определение тому коду который я написал, а именно является ли данное творчество пулом потоков.
Это мне нужно для общего понимания, я понимаю что если это и пул то очень ограниченный и не казистый. Дальше я его буду доводить до ума, важно, на данном этапе убедиться что направление правельное.
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 10.05.2023, 16:12 | ||||
|
В первую очередь нужно избавиться от UB:
1
|
||||
|
0 / 0 / 0
Регистрация: 04.05.2023
Сообщений: 9
|
|
| 10.05.2023, 16:36 [ТС] | |
|
zayats80888 отлично.Насчёт task я так понял что потоки могут одновременно получить к нему доступ, тем самым исказить результат?
То есть когда поток выбрал из очереди задачу и вернулся обратно в цикл while, то следующий поток может заменить задачу следующей в очереди, ещё до выполнения предыдущим потоком?
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 10.05.2023, 16:39 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 04.05.2023
Сообщений: 9
|
|
| 10.05.2023, 16:47 [ТС] | |
|
Это одголоски от первых попыток, в первых моих набросках я мьютексом закрывал весь цикл. Про таск вообще как-то не подумал, ладно я с этим разберусь, спасибо за помощь.
А ещё вопрос, а если я всё-таки буду останавливать потоки, если им нечего делать, методом SuspendThread, это будет приемлемо? А чтобы их присоединить при уничтожении пула, я в деструкторе их опять буду запускать, чтоб они завершили цикл и выходили из него
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 10.05.2023, 16:51 | ||
![]() В любом случае, нет необходимости использовать системное API явно, т.к. в стандартной библиотеке есть средства для "усыпления и пробуждения" потоков с помощью std::condition_variable.
1
|
||
|
0 / 0 / 0
Регистрация: 04.05.2023
Сообщений: 9
|
|
| 10.05.2023, 17:09 [ТС] | |
|
Хорошо, изучу. Я хотел написать пул который бы создавался в самом начале работы программы, при поступлении задач выполнял их, затем возвращался опять в состояние ожидания новых задач, а не крутил бы цикл, тем самым нагружая процессор
0
|
|
| 10.05.2023, 18:17 | |
|
0
|
|
| 10.05.2023, 18:17 | |
|
Помогаю со студенческими работами здесь
15
Передача функции с параметрами в пул потоков Пул потоков на основе boost::lockfree::queue Реализовать пул потоков, в который можно помещать функцию
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|