Re: gethostbyname в FreeBSD

From
Valentin Nechayev ()
To
Sergey Matveychuk ()
Date
2002-08-07T09:52:39Z
Area
RU.UNIX.PROG
From: Valentin Nechayev <netch@segfault.kiev.ua>

>>> Sergey Matveychuk wrote:

>SM>> Покопался я в списке рассылки FreeBSD. Плохо там отзываются об
>SM>> getaddrinfo().
>>В чем это плохо?
SM> Извиняюсь, что долго не отвечал - на работе не было И-нета.
SM> А чем плох getaddrinfo:
SM> 1) Некто Clint Olsen <clint@0lsen.net> пишет (сам не проверял):
SM> The manpage for getaddrinfo() claims it's not threadsafe, either.

getaddrinfo() с текущим резолвером действительно никак не thread safe.
getaddrinfo() в свежем BIND - то что я рекомендовал - вполне thread safe.
Почему нет до сих пор нового резолвера в libc - я не понимаю. Но можно
предположить, что после KSE milestone 4 и переделки libc_r под KSE этим
займутся. Хотя уже сейчас было бы неплохо - даже на текущей libc_r новый
резолвер отлично работает (проверено).

Может, они ждут, не впихнуть ли резолвер от BIND9 с его особыми заморочками?

SM> 2)
SM> http://www.freebsd.org/cgi/getmsg.cgi?fetch=523173+525562+/usr/local/www/db/text/2002/freebsd-hackers/20020602.freebsd-hackers

gethostbyname() эту проблему тем более не отрабатывает, и getaddrinfo()
всего лишь ее не решает, но не ухудшает предыдущее состояние.

>SM>> А чем грозит мне использование gethostbyname в разных тридах?
>SM>> Блокировкой всего процесса? Это самое худшее? :)
>>Грозит тем, что в один тред дадут тебе данные, которые идут в другой.
>>Это если мьютекс не сделаешь нормальный.
>>В общем, не совсем хорошо.
SM> В общем это совсем не хорошо. Ставишь мьютекс - получаешь блокировку
SM> всего процесса. Не ставишь - получаешь геморой.

Так впихнуть напрямую новый резолвер ;)
Он, к счастью, мало зависит от системы.


/netch
--- ifmail v.2.15dev5
 * Origin: Dark side of coredump (2:5020/400)