return -1;
}
+bool succ1, succ2;
+
static void main_task(void *param)
{
+
unsigned int val;
int pid = *((int *)param);
-
+/*
if (!pid) {
input[0] = 17;
- //enqueue(queue, input[0]);
- enqueue(queue, input[0]);
- output[0] = dequeue(queue);
+ succ1 = dequeue(queue, &input[0]);
} else {
input[1] = 37;
enqueue(queue, input[1]);
- //output[1] = dequeue(queue);
- //output[0] = dequeue(queue);
- output[0] = dequeue(queue);
+ }
+*/
+ if (pid % 2 == 0) {
+ input[0] = 17;
+ enqueue(queue, input[0]);
+ printf("Thrd %d Enqueue %d.\n", get_thread_num(), input[0]);
+
+ succ1 = dequeue(queue, &output[0]);
+ if (succ1)
+ printf("Thrd %d: Dequeue %d.\n", get_thread_num(), output[0]);
+ else
+ printf("Thrd %d: Dequeue NULL.\n", get_thread_num());
+
+ } else if (pid % 2 == 1) {
+ input[1] = 37;
+ enqueue(queue, input[1]);
+ printf("Thrd %d Enqueue %d.\n", get_thread_num(), input[1]);
+
+ succ2 = dequeue(queue, &output[1]);
+ if (succ2)
+ printf("Thrd %d: Dequeue %d.\n", get_thread_num(), output[1]);
+ else
+ printf("Thrd %d: Dequeue NULL.\n", get_thread_num());
}
}
unsigned int in_sum = 0, out_sum = 0;
queue = calloc(1, sizeof(*queue));
- MODEL_ASSERT(queue);
+ //MODEL_ASSERT(queue);
num_threads = procs;
threads = malloc(num_threads * sizeof(thrd_t));
}
for (i = 0; i < num_threads; i++)
thrd_join(threads[i]);
-
+/*
for (i = 0; i < num_threads; i++) {
in_sum += input[i];
out_sum += output[i];
for (i = 0; i < num_threads; i++)
printf("output[%d] = %u\n", i, output[i]);
//MODEL_ASSERT(in_sum == out_sum);
+ */
free(param);
free(threads);