C 项目赢得';t执行pthread

C 项目赢得';t执行pthread,c,pthreads,C,Pthreads,我必须设计一个涉及消费者-生产者问题的多线程应用程序。到目前为止,我一直在尝试在实现我的解决方案之前让pthread正常工作。但是,我的程序甚至不会在pthread上加载函数。我不确定我做错了什么 #include <pthread.h> #include <stdlib.h> #include <stdio.h> void* Producer(void *arg) { printf("\nEntered Producer\n"); int i

我必须设计一个涉及消费者-生产者问题的多线程应用程序。到目前为止,我一直在尝试在实现我的解决方案之前让pthread正常工作。但是,我的程序甚至不会在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;
}
#包括
#包括
#包括
无效*生产者(无效*参数)
{
printf(“\n输入生产者\n”);
int i,项目,索引;
索引=(int)arg;
文件*f=fopen(书单,“r”);
char c=fgetc(f);
int z=0;
而(c!=EOF){
char*buffer=(char*)malloc(1000);
而(c!='\n'){
*(缓冲器+z)=c;
z++;
c=fgetc(f);
}
char delim[2]=“|”;
printf(“%s\n”,缓冲区);
}
}
int main(int argc,const char*argv[]
{
pthread_t Produc;
pthread_create(&Produc,NULL,Producer,NULL);
返回0;
}

我想我的大问题是,创建pthread然后让它运行函数的正确过程是什么,在本例中是我的生产者函数,这里发生的是主线程调用pthread\u create,然后返回,因为主线程退出,所以生产线程也退出。您需要做的是,指示主线程等待
Produc
线程完成执行

 int main(){
      //Call pthread_create
      pthread_join(Produc, NULL) ;
      return 0;
 }

另外,请记住,如果要创建多个线程,请先为所有线程编写pthread_create,然后对所有线程调用pthread_join。