В настоящее время я работаю над многопоточным приложением, которое будет развернуто на архитектуре arm и ppc. У меня проблемы с pthread_cancel на руке.
pthread_cancel на руке не ведет себя так же с PPC. Поток отменяется, но деструктор для локальной переменной потока не вызывается на руку. Я также попытался явно определить подпрограмму обработчика отмены очистки, установленную через pthread_cleanup_push. Но он не вызывается, когда поток отменяется.
Код отлично работает с PPC. Когда поток отменяется, вызывается деструктор локальной переменной. И когда я явно определил обработчик очистки, он вызывался и выполнялся, когда вызывался pthread_cancel.
Я что-то упустил? Возможно, некоторые параметры компилятора?
- Язык программирования: C ++
- Компиляторы: arm-linux-g ++ / powerpc-linux-g ++
- ОС: Linux
EDIT:
Я обнаружил подобную проблему, зарегистрированную в этой ошибке libc .
Использование gcc вместо g ++ и добавление опции компилятора -fno-exception сделали свое дело. Но я очень хочу понять, что стоит за этой проблемой. Более того, -fno-exception означает, что я не смогу выполнять обработку исключений в своем приложении, не то чтобы я использую его сейчас, но я могу быть в будущем.
Спасибо.