#include #include #include int x = 0, y = 0; int a, b, c, d; void *thread0( void *arg ) { y = 1; a = x; c = y; return 0; } void *thread1( void *arg ) { x = 1; b = y; d = x; return 0; } int main() { pthread_t t0, t1; pthread_create( &t0, 0, thread0, 0 ); pthread_create( &t1, 0, thread1, 0 ); pthread_join( t0, 0 ); pthread_join( t1, 0 ); printf( "a = %d, b = %d, c = %d, d = %d", a, b, c, d ); assert( a != 0 || b != 0 ); }