#include #include #include void shared_check(); // On some OS's (darwin) you must actually access a thread local variable // before you can read it int touch_shared(); // Create some TLS storage within the static executable. __thread int var_static = 44; void *fn_static(void *param) { var_static *= 2; shared_check(); usleep(1); // thread breakpoint for(;;) usleep(1); } int main (int argc, char const *argv[]) { pthread_t handle; pthread_create(&handle, NULL, &fn_static, NULL); touch_shared(); for (; var_static;) { usleep(1); // main breakpoint } return 0; }