C多线程与pthread

时间:2017-04-03 14:13:00

标签: c multithreading pthreads

我试图在循环中使用pthread_create创建30个线程。我使用了正确的标题。

struct student_thread{
int id;
char * message;
};


void *student(void *i)
{
struct student_thread *s;
s = (struct student_thread *) i;

printf("%s%d\n",s->message,s->id);
//sleep(1);
pthread_exit(NULL);
}



void creat_student_thread()
{
    pthread_t st[N];
    struct student_thread stt[N];

    int i,ct;

    for(i=0;i<N;i++){
        stt[i].id =i+1;
        stt[i].message = "Created student thread ";
        ct = pthread_create(&st[i],NULL,student,(void *) &stt[i].id);
        //enqueue(Q1,stt[i].id);
        if(ct){
            printf("Error!Couldn't creat thread\n");
            exit(-1);
        }
    }
}

int main()
{
    creat_student_thread();
}

但是输出显示只创建了28个线程。output 我在这里缺少什么?先谢谢。

1 个答案:

答案 0 :(得分:0)

移动参数数组'struct student_thread stt [N];'超出'creat_student_thread()'。比如说,让它变得全球化。

防止main()提前退出,例如。具有无限的睡眠循环或输入请求。