//main.c
#include <pthread.h>
#include <stdio.h>
#include <stdint.h>
void* routine(void* arg)
{
int id = (intptr_t) arg;
printf("new thread %d\n", id
); pthread_exit((void*)(intptr_t) id);
}
int main()
{
pthread_t t[2];
int i;
for(i=0; i<2; i++)
{
int ret = pthread_create (&t[i], NULL, &routine, (void *)(intptr_t) i);
if(ret != 0) {
printf("Error: pthread_create() failed\n"); return -1;
}
}
int id;
/////////here
for(i=0; i<2; i++)
{
pthread_join(t[i], (void **)&id);
}
/////////here
pthread_exit(NULL);
}
Ly9tYWluLmMKI2luY2x1ZGUgPHB0aHJlYWQuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4Kdm9pZCogcm91dGluZSh2b2lkKiBhcmcpCnsKICAgIGludCBpZCA9IChpbnRwdHJfdCkgYXJnOwogICAgcHJpbnRmKCJuZXcgdGhyZWFkICVkXG4iLCBpZCk7CiAgICBwdGhyZWFkX2V4aXQoKHZvaWQqKShpbnRwdHJfdCkgaWQpOwp9CmludCBtYWluKCkKewogICAgcHRocmVhZF90IHRbMl07CiAgICBpbnQgaTsKICAgIGZvcihpPTA7IGk8MjsgaSsrKQogICAgewogICAgICAgIGludCByZXQgPSBwdGhyZWFkX2NyZWF0ZSAoJnRbaV0sIE5VTEwsICZyb3V0aW5lLCAgKHZvaWQgKikoaW50cHRyX3QpIGkpOwogICAgICAgIGlmKHJldCAhPSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiRXJyb3I6IHB0aHJlYWRfY3JlYXRlKCkgZmFpbGVkXG4iKTsKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KICAgIH0KICAgIGludCBpZDsKICAgIC8vLy8vLy8vL2hlcmUKICAgIGZvcihpPTA7IGk8MjsgaSsrKQogICAgewogICAgICAgIHByaW50ZigiaTogJWRcbiIsaSk7CiAgICAgICAgcHRocmVhZF9qb2luKHRbaV0sICh2b2lkICoqKSZpZCk7CiAgICB9CiAgICAvLy8vLy8vLy9oZXJlCiAgICBwdGhyZWFkX2V4aXQoTlVMTCk7Cn0=