I tried to make a parallel program that generates a random number with one thread and the other thread writes it.
Am I doing something wrong that messes with the performance/optimization? I ask it because it was very easy to write this program so I'm a little concerned that I am doing something wrong.
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <semaphore.h>
#include <time.h>
#include "produceConsume.h"
#define NUM_THREAD 1
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int queue[1];
int queueCounter = 0;
void *producer(void *args)
{
    while (1)
    {
        pthread_mutex_lock(&lock);
        int n = rand() % 100;
        queue[queueCounter] = n;
        queueCounter++;
        pthread_cond_wait(&cond, &lock);
        pthread_mutex_unlock(&lock);
    }
}
void *consumer(void *args)
{
    while (1)
    {
        pthread_mutex_lock(&lock);
        printf("%d\n", queue[queueCounter - 1]);
        queueCounter--;
        pthread_cond_signal(&cond);
        pthread_mutex_unlock(&lock);
        sleep(1);
    }
}
int main()
{
    system("clear");
    srand(time(NULL));
    pthread_t th[NUM_THREAD], th2[NUM_THREAD];
    for (int i = 0; i < NUM_THREAD; i++)
    {
        pthread_create(&th[i], NULL, &producer, NULL);
        pthread_create(&th2[i], NULL, &consumer, NULL);
    }
    for (int i = 0; i < NUM_THREAD; i++)
    {
        pthread_join(th[i], NULL);
        pthread_join(th2[i], NULL);
    }
}
