144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany#include <pthread.h> 244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany#include <stdlib.h> 344830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany#include <stdio.h> 444830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany 544830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryanyconst int N = 1000; 644830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryanyvoid *x[N]; 744830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany 8552c6702493cfcab356d3aa94becf50ff019838bKostya Serebryanyvoid *Thread1(void *unused) { 944830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany for (int i = 0; i < N; i++) { 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines fprintf(stderr, "%s %d\n", __func__, i); 1144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany free(x[i]); 1244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany } 1344830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany return NULL; 1444830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany} 1544830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany 16552c6702493cfcab356d3aa94becf50ff019838bKostya Serebryanyvoid *Thread2(void *unused) { 1744830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany for (int i = 0; i < N; i++) { 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines fprintf(stderr, "%s %d\n", __func__, i); 1944830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany free(x[i]); 2044830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany } 2144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany return NULL; 2244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany} 2344830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany 2444830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryanyint main() { 2544830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany for (int i = 0; i < N; i++) 2644830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany x[i] = malloc(128); 2744830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany pthread_t t[2]; 2844830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany pthread_create(&t[0], 0, Thread1, 0); 2944830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany pthread_create(&t[1], 0, Thread2, 0); 3044830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany pthread_join(t[0], 0); 3144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany pthread_join(t[1], 0); 3244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany} 33