1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* A simple race */ 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <pthread.h> 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <unistd.h> 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic int shared; 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void *th(void *v) 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown shared++; 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main() 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_t a, b; 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_create(&a, NULL, th, NULL); 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown sleep(1); /* force ordering */ 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_create(&b, NULL, th, NULL); 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_join(a, NULL); 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_join(b, NULL); 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 28