Я очень застрял в одной проблеме, мне нужна строка файла prinft один за другим, чтобы один поток. Это код:Prinft line by line of file single thread C
#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, как я могу напечатать линию по линии одним и тем же читателем потока?
Почему вы используете 'pthread', если все, что вам нужно сделать, это напечатать строки один за другим? Я уверен, что если вы создадите кучу нитей, а каждое из них должно напечатать одну строку, некоторые из потоков завершат выполнение «не в порядке». – APerson
Это поможет, если вы не передадите один и тот же буфер строк всем им. Подумайте об этом - что, если вы начнете поток, тогда вы прочтете следующую строку в тот же буфер, THEN поток вызывает 'printf'? – immibis
Я всего лишь одна часть работы, но главным является прохождение линии по потоку в другие потоки. – StAx