我必须设计一个涉及消费者 - 生产者问题的多线程应用程序。到目前为止,在尝试实施我的解决方案之前,我一直在努力让Pthreads正常工作。但是,我的程序甚至不能加载我的pthread上的函数。我不确定我在这里做错了什么。
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
void* Producer(void *arg)
{
printf("\nEntered Producer\n");
int i, item, index;
index = (int)arg;
FILE *f = fopen(bookorders, "r");
char c = fgetc(f);
int z =0;
while (c!=EOF) {
char * buffer = (char *)malloc(1000);
while (c!='\n') {
*(buffer+z) = c;
z++;
c = fgetc(f);
}
char delim[2] = "|";
printf("%s\n", buffer);
}
}
int main(int argc, const char * argv[])
{
pthread_t Produc;
pthread_create(&Produc, NULL, Producer, NULL);
return 0;
}
我想我的重要问题是创建pthread然后让它运行一个函数的正确过程是什么,在这种情况下是我的生产者函数
答案 0 :(得分:2)
这里发生的是您的主线程调用pthread_create
并且只返回,并且由于主线程退出,您的生产线程也会退出。你需要做的是,指示主线程等待Produc
线程完成执行。
int main(){
//Call pthread_create
pthread_join(Produc, NULL) ;
return 0;
}