Обработка сбоя потока [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Обработка сбоя потока [закрыто]

Сообщение Гость »


Я искал в Интернете следующий вопрос: Может ли процесс продолжить выполнение, если один из его порожденных потоков выходит из строя в cpp?

Кажется, все ответы предполагают, что это невозможно/может привести к неопределенному поведению (даже после написания обработчика sigsegv), поскольку потоки совместно используют память; или существуют определенные платформы, на которых можно обрабатывать сбои потоков, что делает вашу платформу кода специфичной.

Итак, мои вопросы:

Предположим, у меня есть основной процесс, который порождает n потоков. Каждый из этих потоков не хочет взаимодействовать друг с другом; однако они хотят взаимодействовать с основным процессом.
[*]
Если я сделаю структуры данных, совместно используемые потоками и моим основным процессом, только для чтения; могу ли я в этом случае безопасно обработать сбой потока без каких-либо потенциальных UB?
[*]
Меня беспокоит то, что даже если эти потоки не хотят взаимодействовать друг с другом, все равно существует вероятность того, что поток может попытаться получить доступ к памяти какого-либо другого потока (скажем, ошибка в code), поскольку потоки используют одно и то же адресное пространство. Как мне тогда поступить в этом случае?
[*]
Я могу сделать свою кодовую платформу специфичной (хотя я ограничиваюсь cpp). Какие платформы поддерживают обработку сбоя потока?
[*]
Является ли повреждение памяти из-за сбоя потока единственным, о чем мне следует беспокоиться при обработке сбоя потока? Скажем, я гарантирую, что поток всегда будет обращаться к своей памяти и никогда не будет обращаться к памяти другого потока. Могу ли я безопасно справиться со сбоем в этой теме? Предоставляется ли cpp какая-либо документация или гарантии относительно того, когда я могу безопасно обработать сбой потока?

Примечание. Я знаю, что мне не пришлось бы беспокоиться о недопустимом доступе к памяти, если бы я использовал процессы; но я не хочу использовать процессы.

Заранее спасибо!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»