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)