힙이 블랙리스트에있는 경우 (멀티 스레드 사용) ips 목록을 확인하고 싶습니다.멀티 스레드를 사용하여 파일 읽기
pthread_mutex_t input_queue;
void * process(void * data)
{
unsigned long ip = 0xffffffff;
char line[20];
while (!feof(INFILE))
{
pthread_mutex_lock(&input_queue);//?required
if (fgets(line,sizeof(line),INFILE) != NULL)
{
if (strlen(line) < 8)
break;
if (line[strlen (line) - 1] == '\n')
line[strlen (line) - 1] = '\0';
ip = ntohl((unsigned long)inet_addr(line));
}
pthread_mutex_unlock(&input_queue);
blacklist(ip);
}
return NULL;
}
//in main()
pthread_mutex_init(&input_queue,NULL);
for(i = 0 ; i < number_thread; i++)
{
if(pthread_create(&thread_id[i],NULL,&process,NULL) != 0)
{
i--;
fprintf(stderr,RED "\nError in creating thread\n" NONE);
}
}
for(i = 0 ; i < number_thread; i++)
if(pthread_join(thread_id[i],NULL) != 0)
{
fprintf(stderr,RED "\nError in joining thread\n" NONE);
}
가에 pthread_mutex_lock이 필요하거나는 fgets 스레드 안전 :
그래서, 나는 다음과 같은 코드가? 내 코드에 몇 가지 문제가 있다고 생각합니다.