С помощью функции C ++ 0x в exception_ptr можно сохранить исключение в одном потоке и получить доступ к нему другого потока.Однако другой поток должен вызвать rethrow_exception ().Однако в некоторых случаях мне нужно фактически прервать другой поток и немедленно вызвать исключение;опрос исключений_ptr для ненулевого значения не является решением.
Я нашел решение о том, как внедрить исключение в Windows на http://www.codeproject.com/KB/exception/ExcInject.aspx, приостановив поток и изменив его регистр указателя инструкций перед его возобновлением.,Однако мне также нужен мой код для запуска в Linux.Как мне сделать это там?
Если я использую что-то вроде getcontext (), это получает контекст текущего потока (тогда как в Windows, GetContext () принимает параметр потока), поэтому я должен вызвать его вобработчик сигнала.Но я читал, что getcontext () / setcontext () не должен вызываться в обработчиках сигналов ... В качестве альтернативы я мог бы вызвать rethrow_exception () непосредственно в обработчике сигналов, но я боюсь, что это не будет иметь ожидаемого эффектагде в прерванном потоке стек разматывается одинаково со всеми деструкторами области, в которой было вызвано прерывание и т. д.