-1

私は1つの問題に非常にこだわっています。1つのスレッドで順番に印刷ファイルの行を1つずつ必要としています。これはコードです:

   #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
    #include <string.h>
    /* Prototypes */

    pthread_t reader;

    void *readLine(void *line)
    {   
        printf("Thread: %s \n",(char*)line);
        pthread_exit(NULL);
    }

    int main(int argc, char *argv[])
    {
        FILE * fp;
        char * line = NULL;
        size_t len = 0;
        ssize_t read;



        fp = fopen("texto.txt", "r");
        if (fp == NULL)
            exit(EXIT_FAILURE);



        while ((read = getline(&line, &len, fp)) != -1)   {

            if(pthread_create(&reader, NULL, readLine, (void *)line)) {
                    fprintf(stderr, "Error creating thread\n");         
            }

        }


        fclose(fp);
        if  (line)
            free(line);
        exit(EXIT_SUCCESS);
    }

このコードは行を無秩序に印刷し、すべてのスレッドが readLine によって渡された行を印刷するわけではありません。同じスレッド リーダーで行ごとに印刷するにはどうすればよいですか?

4

1 に答える 1

2

Basically, by using independent threads, you are sending them all on their way independently, and they might pass each other.

スターバックスに走ってコーヒーを買うために20人を別々に送り出すと想像してください。彼らの運転とルートの選択に応じて、彼らは任意の順序で到着し、繰り返したり、送った順序ではありません。

例にとどまるには、20 コーヒーを得るために1人の男を送るだけで、あなたはうまくいきます。

于 2015-12-22T04:22:24.553 に答える