#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
struct key_type {
int value;
key_type() : value(0) {
sleep (1);
pthread_yield();
value = 42;
}
};
void * thread1(void*) {
static key_type local_key;
printf("thread has key %d\n", local_key.value);
return NULL;
}
int main()
{
pthread_t t[2];
pthread_create(&t[0], NULL, thread1, NULL);
pthread_create(&t[1], NULL, thread1, NULL);
pthread_join(t[0], NULL);
pthread_join(t[1], NULL);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxwdGhyZWFkLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCnN0cnVjdCBrZXlfdHlwZSB7CiAgICBpbnQgdmFsdWU7CiAgICBrZXlfdHlwZSgpIDogdmFsdWUoMCkgewogICAgICAgIHNsZWVwICgxKTsKICAgICAgICBwdGhyZWFkX3lpZWxkKCk7CiAgICAgICAgdmFsdWUgPSA0MjsKICAgIH0KfTsgIAoKCnZvaWQgKiB0aHJlYWQxKHZvaWQqKSB7CiAgICBzdGF0aWMga2V5X3R5cGUgbG9jYWxfa2V5OwogICAgcHJpbnRmKCJ0aHJlYWQgaGFzIGtleSAlZFxuIiwgbG9jYWxfa2V5LnZhbHVlKTsKICAgIHJldHVybiBOVUxMOwp9ICAgCgppbnQgbWFpbigpCnsKICAgIHB0aHJlYWRfdCB0WzJdOwogICAgcHRocmVhZF9jcmVhdGUoJnRbMF0sIE5VTEwsIHRocmVhZDEsIE5VTEwpOwogICAgcHRocmVhZF9jcmVhdGUoJnRbMV0sIE5VTEwsIHRocmVhZDEsIE5VTEwpOwogICAgcHRocmVhZF9qb2luKHRbMF0sIE5VTEwpOwogICAgcHRocmVhZF9qb2luKHRbMV0sIE5VTEwpOwp9ICAg