Что это может означает?
Результат того, что в деструкторе вызываю
pthread_cancel()
Posted via RSDN NNTP Server 2.0
Причина немного прояснилась.
После вызова pthread_cancel() — кидается исключения в потоке.
py wrote:
> Что это может означает?
> Результат того, что в деструкторе вызываю
> pthread_cancel()Posted via RSDN NNTP Server 2.0
Здравствуйте, py, Вы писали:
py>Причина немного прояснилась.
py>После вызова pthread_cancel() — кидается исключения в потоке.
py>py wrote:
>> Что это может означает?
>> Результат того, что в деструкторе вызываю
>> pthread_cancel()
кидать исключения в деструкторе нельзя — вызывается terminate. А вот почему without an active exception —
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я вынес из деструктора эту функцию.
Кидается исключение в потоке, когда я вызываю pthread_cancel.
Если компилировать gcc 3.4 на другом компе — все работает.
Очень странно.
> py>Причина немного прояснилась.
> py>После вызова pthread_cancel() — кидается исключения в потоке.Posted via RSDN NNTP Server 2.0
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, py, Вы писали:
py>>Причина немного прояснилась.
py>>После вызова pthread_cancel() — кидается исключения в потоке.
py>>py wrote:
>>> Что это может означает?
>>> Результат того, что в деструкторе вызываю
>>> pthread_cancel()
КЛ>кидать исключения в деструкторе нельзя — вызывается terminate.
Это ерунда. Из деструктора можно кидать исключения, хотя это может быть не самая удачная идея.
std::terminate вызывается, когда не обработав исключение, ты кидаешь еще одно. Например, когда деструктор вызван в результате раскрутки стэка после throw и ты кидаешь из деструктора еще одно исключение.
КЛ>А вот почему without an active exception —
Это throw вызван без аргумента не из catch-блока.
$ cat test.cc
int main() { throw; }
$ g++ -Wall -Wextra -o test test.cc
$ ./test
terminate called without an active exception
Aborted (core dumped)
Здравствуйте, MaximE, Вы писали:
[]
КЛ>>кидать исключения в деструкторе нельзя — вызывается terminate.
ME>Это ерунда. Из деструктора можно кидать исключения, хотя это может быть не самая удачная идея.
ME>std::terminate вызывается, когда не обработав исключение, ты кидаешь еще одно. Например, когда деструктор вызван в результате раскрутки стэка после throw и ты кидаешь из деструктора еще одно исключение.
мда, подзабыл подробности
[]
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>