Size: a a a

2020 May 10

AM

Alex Master in pro.cxx
Побитый Кирпич
Значит каждому потоку отправляется in_pause сигнал, путём установки этой переменной в true
то есть нужно в пользовательский код проталкивать различные костыли для многопотока?
источник

ПК

Побитый Кирпич... in pro.cxx
Alex Master
то есть нужно в пользовательский код проталкивать различные костыли для многопотока?
Какой пользовательский код? Event loop это Core код
источник

ПК

Побитый Кирпич... in pro.cxx
Тебе нужно паузить задачу, а не исполнителя
источник

AM

Alex Master in pro.cxx
ну тут уже код показывать надо. спасибо всем за помощь
источник

AM

Alex Master in pro.cxx
Alex
В винде есть функция SuspendThread, ей можно любой поток просто по id застопорить
Кидает failure reason 6. То же самое с resume
источник

NP

Nikita Provotorov in pro.cxx
Да нет никаких способов сферический поток в вакууме остановить, особенно если там нет cancellation pointов, надо код модифицировать
источник

AM

Alex Master in pro.cxx
Nikita Provotorov
Да нет никаких способов сферический поток в вакууме остановить, особенно если там нет cancellation pointов, надо код модифицировать
Понял. Спасибо
источник

A

Alex in pro.cxx
Nikita Provotorov
Да нет никаких способов сферический поток в вакууме остановить, особенно если там нет cancellation pointов, надо код модифицировать
ну как это нет, ОС спокойно их останавливает как хочет
источник

NP

Nikita Provotorov in pro.cxx
Alex
ну как это нет, ОС спокойно их останавливает как хочет
Я не думаю, что у товарища есть доступ к планировщику
источник

A

Alex in pro.cxx
я бы дальше покопал в сторону SuspendThread / ResumeThread, раз в юзерспейсе есть такие функции, они же должны работать
источник

AM

Alex Master in pro.cxx
Alex
я бы дальше покопал в сторону SuspendThread / ResumeThread, раз в юзерспейсе есть такие функции, они же должны работать
Я далеко не сразу написал. Я копал и в сторону pthread_kill(), который вторым аргументом принимает тип операции (может останавливать/возобновлять/убивать), и в сторону этих функций. Основная проблема это отсутствие нормально расписанной доки со всеми аргументами и их кодами.
источник

A

Alex in pro.cxx
Alex Master
Кидает failure reason 6. То же самое с resume
В доке написано: "The handle must have the THREAD_SUSPEND_RESUME access right. "
Может, нужно создать поток через CreateThread и указать этот флаг?
источник

AM

Alex Master in pro.cxx
Alex
В доке написано: "The handle must have the THREAD_SUSPEND_RESUME access right. "
Может, нужно создать поток через CreateThread и указать этот флаг?
Похоже, что так и есть
источник

z

zeroid in pro.cxx
А задача какая?
источник

AM

Alex Master in pro.cxx
Спасибо за помощь. Буду дальше сам копать
источник

AM

Alex Master in pro.cxx
Alex Master
добрый день. есть простейший thread pool. есть ли возможность моментально замораживать потоки, а потом так же моментально их восстанавливать на том же месте работы для продолжения? про существование mutex, cond_var, lock, atomic я знаю. вопрос в том, как это лучше организовать, и вообще возможно ли?
Эта
источник

A

ARCHANGEL in pro.cxx
Если поток уже есть, достаточно его открыть через OpenThread по thread id
источник

AM

Alex Master in pro.cxx
Alex Master
хорошо. допустим у нас есть симуляция, в которой есть общая очередь объектов перед конвейером. распределитель берёт объект с головы очереди, определяет его на нужную ветвь (отдельный поток) и запускает задачу для его обработки. необходима возможность остановить симуляцию в конкретный момент времени, чтобы после этой команды никакие действия не происходили.
Эта
источник

A

ARCHANGEL in pro.cxx
не нужно его спецом создавать через CreateThread
источник

AM

Alex Master in pro.cxx
ARCHANGEL
Если поток уже есть, достаточно его открыть через OpenThread по thread id
Неожиданно. Спасибо
источник