Здравствуйте, alexora, Вы писали:
A>Я вот написал софтину, которая чекает мыла на валидатность. Она у меня тредовая. Кол. тредов указываешь. Каждый тред считывает определенное кол. бай с файла и чекает мыла на MX записи. Чекаю я через res_search
функцию. Тестирование я проводил при 500 тредах, каждый тред считывал по 10кб данных с файла. Прикол в том, что если закоментировать кусок кода, который чекает на MX записи, то все пашет (файл при єтом парсится тредами и переписывается в другой). Если оставить этот кусок кода, то на середине проверки вываливается Segmention fault Как это понять ?
A>Вот весь код :
A>[ccode]
A>#include <sys/types.h>
A>#include <stdio.h>
A>#include <pthread.h>
A>#include <g++/vector>
A>#include <g++/string>
A>#include <netinet/in.h>
A>#include <arpa/nameser.h>
A>#include <resolv.h>
A>#include <g++/iostream>
A>#include <sys/stat.h>
A>#include <unistd.h>
A>#include <g++/algorithm>
A>#define MAXTHREADCOUNT 500
A>#define MINTHREADCOUNT 1
A>#define STEPPOS 10240
For users of C and C++ compilers without support for the -pthread switch,
you must ensure that the C preprocessor symbol _REENTRANT is defined before
including any system header file. One way to accomplish this is to compile
the application as follows:
cc -c myprog.c -D_REENTRANT
То есть тебе нужны thread-safe версии библиотек. Вот такие три строки _перед_ всеми инклюдами тебе помогут
#ifndef _REENTRANT
#define _REENTRANT
#endif // _REENTRANT
или действительно задай этот define в опциях компиляции.