Добрый вечер всем программистам.
Помогите советом.
Есть программа:
#define LOGFILE "/tmp/logfifo"
void* safe_delimit(void* string)
{
char *arg_pointer = (char*)string;
if(!arg_pointer){
printf("safe_delimit(): нулевой указатель string");
return;}
printf("stream: %s\n", arg_pointer);
return;
}
int main()
{
FILE* logfile;
char buffer[1024] = "";
if((logfile = fopen(LOGFILE, "r")) == (FILE *)NULL) {
printf("ошибка открытия файла %s", LOGFILE);
return -1;}
while(fgets(buffer, sizeof(buffer), logfile) != (char*) NULL) {
pthread_t child;
printf("%s", buffer);
if(pthread_create(&child, NULL, safe_delimit, buffer) != 0)
printf("ошибка создания потока\n");
else
pthread_join(child, 0); }
fclose(logfile);
return 0;
}
LOGFILE здесь является fifo файлом. Другой процесс в него постоянно пишет строки, разделенные '\n', а эта програма их читает и на каждую строку создает отдельный поток.
Если ставлю pthread_join(child, 0); , то все отлично, а если pthread_detach(child); , то начинается какая-то ерунда: когда строка считается, на нее то не создается потока, то создается сразу два потока, а то поток создается, но параметр пустой. Как я понимаю, pthread_join(child, 0); заставляет программу ждать завершения потока, а мне нужно что-бы все потоки и родительская программа были независимы.
Почему такое разное поведение при pthread_join(child, 0); и pthread_detach(child);?
Спасибо за люьые советы.
![](/img/p.gif)
![](/photos/9916:-1997412678.jpg)
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Ответ на:
комментарий
от romanSA
![](/img/p.gif)
Ответ на:
комментарий
от AVI
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Ответ на:
комментарий
от idle
![](/img/p.gif)
Ответ на:
комментарий
от Dead
![](/img/p.gif)
Ответ на:
комментарий
от idle
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Завершение потока: остается занятая память. (2009)
- Форум Реализовать последовательно-параллельный запуск потоков (2017)
- Форум нити (2007)
- Форум pthreads - ошибка линковки (2001)
- Форум Posix Threads (2005)
- Форум pthread (2006)
- Форум pthread не работает (2006)
- Форум pthread_detach (2005)
- Форум pthread_create и прочий бред. (2004)
- Форум Странное поведение thread (2003)