C res_query线程安全吗?

C res_query线程安全吗?,c,linux,dns,thread-safety,resolver,C,Linux,Dns,Thread Safety,Resolver,是resu查询(int resu查询(const char*dname,int class,int type,unsigned char*answer, int anslen);)线程安全 我认为是这样,因为它将其答案写入用户分配的缓冲区(与使用静态分配缓冲区的gethostbyname相反) 有人确实知道吗?你说得对,res\u查询不是线程安全的。您必须使用res_-nquery,它首先接受“res_-state”参数。从我读到的所有内容来看,这就是查询应该如何以线程安全的方式进行。@Dumm

是resu查询(
int resu查询(const char*dname,int class,int type,unsigned char*answer,
int anslen);
)线程安全

我认为是这样,因为它将其答案写入用户分配的缓冲区(与使用静态分配缓冲区的gethostbyname相反)


有人确实知道吗?

你说得对,res\u查询不是线程安全的。您必须使用res_-nquery,它首先接受“res_-state”参数。从我读到的所有内容来看,这就是查询应该如何以线程安全的方式进行。

@Dummy00001:只有一个例子,有人声称res\u query不是线程安全的,因为它覆盖了内部配置变量\u res。我在BIND邮件列表中找到了一些旧的讨论(从2002年开始)(libresolv,因此res_query是BIND的一部分),即_res应该是线程本地的,因此我认为它们已经在今年前实现了。顺便说一句,宣传支持(异步)名称解析。我打赌他们有更好的关于MT安全性的文档。祝你好运。@Dummy00001:不幸的是,我不能使用其他库,因为resu查询是从第三方库调用的。