Originally Posted by
AdnanShaheen
Can you post all of your code here? I will examine it
OK, but a lot of my code is not finished yet, so ignore the queue and consumer/producer stuff. The problem I have right now is inside the main. But I'll post it all anyway...
Code:
#include<stdio.h>
#include<stdlib.h>
#include <ctype.h>
#include<unistd.h>
#include<pthread.h>
typedef struct {
long head, tail;
int full, empty;
pthread_mutex_t *mutex;
pthread_cond_t *notFull, *notEmpty;
} queue;
char * buffer[4];
char * inputFile[19];
void *producer(void* args);
void *consumer(void* args);
int main()
{
queue *test;
pthread_t producerVar;
pthread_t consumerVar;
FILE * myfile;
char line[1024];
int i = 0;
char str[200];
for(i = 0; i <= 19; i++)
{
inputFile[i] = 0;
}
for(i = 0; i <= 9; i++)
{
sprintf(str, "in%d.txt", i);
myfile = fopen(str,"r+");
printf("from string: %s\n", str);
while (!feof(myfile))
{
fgets(line, 256, myfile);
}
//strcpy(inputFile[i], line);
inputFile[i] = line;
printf("%s",inputFile[i]);
}
for(i = 0; i <= 9; i++)
{
printf("%d: %s\n", i, inputFile[i]);
}
test->full = 0;
test->empty = 0;
test->head = 0;
test->tail = 0;
test->mutex = (pthread_mutex_t *) malloc (sizeof (pthread_mutex_t));
pthread_mutex_init(test->mutex, NULL);
pthread_create(&producerVar, NULL, producer, test);
pthread_create(&consumerVar, NULL, consumer, test);
pthread_join(producerVar, NULL);
pthread_join(consumerVar, NULL);
return 0;
}
void *producer(void *arg)
{
queue * test = (queue *) arg;
int i = 0;
printf("IN PRODUCER\n");
pthread_mutex_lock(test->mutex);
//test->buf[0] = buffer;
while(inputFile[0][i] != '\n')
{
inputFile[0][i] = toupper(inputFile[0][i]);
i++;
}
printf("%s\n", inputFile[0]);
buffer[0] = inputFile[0];
pthread_mutex_unlock(test->mutex);
return(NULL);
}
void *consumer(void *arg)
{
int i = 0;
queue * test = (queue *) arg;
printf("IN CONSUMER\n");
pthread_mutex_lock(test->mutex);
printf("%s\n", buffer[0]);
pthread_mutex_unlock(test->mutex);
return(NULL);
}