catch_pthread_exit.cpp revision 256281
1/* $FreeBSD: stable/10/tools/regression/pthread/unwind/catch_pthread_exit.cpp 213155 2010-09-25 04:26:40Z davidxu $ */ 2/* try to catch thread exiting, and rethrow the exception */ 3 4#include <pthread.h> 5#include <stdio.h> 6#include <stdlib.h> 7 8int caught; 9 10void * 11thr_routine(void *arg) 12{ 13 try { 14 pthread_exit(NULL); 15 } catch (...) { 16 caught = 1; 17 printf("thread exiting exception caught\n"); 18 /* rethrow */ 19 throw; 20 } 21} 22 23int 24main() 25{ 26 pthread_t td; 27 28 pthread_create(&td, NULL, thr_routine, NULL); 29 pthread_join(td, NULL); 30 if (caught) 31 printf("OK\n"); 32 else 33 printf("failure\n"); 34 return (0); 35} 36