#include <assert.h>
#include <limits.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
static const int NUM_THREADS = 10;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int finished = 0;
__thread void *ptr1;
__thread void *ptr2;
__thread void *ptr3;
__thread void *ptr4;
__thread void *ptr5;
void alloc() {
ptr1 = malloc(1111);
ptr2 = malloc(2222);
ptr3 = malloc(3333);
ptr4 = malloc(4444);
ptr5 = malloc(5555);
}
void *thread_start(void *arg) {
alloc();
pthread_mutex_lock(&mutex);
finished++;
pthread_mutex_unlock(&mutex);
while (1)
sleep(100);
}
int main() {
pthread_t thread[NUM_THREADS];
for (int i = 0; i < NUM_THREADS; ++i) {
assert(0 == pthread_create(&thread[i], 0, thread_start, 0));
}
while (finished < NUM_THREADS)
sleep(1);
exit(0);
}