- pthread_t child_thread[2];
- int id1 = 1;
- int id2 = 2;
- pthread_create(&child_thread[0], 0 /* attr */, run_func, &id1);
- pthread_create(&child_thread[1], 0 /* attr */, run_func, &id2);
- pthread_join(child_thread[0], 0);
- pthread_join(child_thread[1], 0);
- *seqp++ = '\0';
+ pthread_t child_thread[NUM_THREADS];
+ int i, id[NUM_THREADS];
+
+ assert (num <= NUM_THREADS);
+ for (i = 0; i<num; i++)
+ {
+ id[i] = i >= 2 ? 0 : 1; /* first two are writing.. rest is reading */
+ pthread_create(&child_thread[i], 0 /* attr */, run_func, &id[i]);
+ }
+
+ for (i = 0; i<num; i++)
+ pthread_join(child_thread[i], 0);
+
+ for (i = 0; i<num; i++)
+ YAZ_CHECK(id[i] == 123);