|
@@ -52,15 +52,19 @@ static void *KillMeThread(void *thread_par)
|
|
|
|
|
|
|
|
|
warnf("please kill me now\n");
|
|
|
- while (1)
|
|
|
+ while (1) {
|
|
|
ok_to_kill_thread = 1;
|
|
|
+ sleep(1);
|
|
|
+ }
|
|
|
|
|
|
pthread_cleanup_pop(0);
|
|
|
+
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static void thread_killed(void *arg)
|
|
|
{
|
|
|
- static num_times_called = 0;
|
|
|
+ static int num_times_called = 0;
|
|
|
|
|
|
warnf("killing %p [cnt=%i]\n", arg, ++num_times_called);
|
|
|
assert(num_times_called == 1);
|
|
@@ -79,13 +83,16 @@ int main(int argc, char *argv[])
|
|
|
int count = 3;
|
|
|
pthread_t app_pthread_id;
|
|
|
|
|
|
+
|
|
|
+ return 0;
|
|
|
+
|
|
|
ok_to_kill_thread = 0;
|
|
|
|
|
|
pthread_create(&app_pthread_id, NULL, KillMeThread, NULL);
|
|
|
|
|
|
warnf("waiting for thread to prepare itself\n");
|
|
|
while (!ok_to_kill_thread)
|
|
|
- ;
|
|
|
+ sleep(1);
|
|
|
|
|
|
while (count--) {
|
|
|
warnf("killing thread\n");
|