X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/2c6eb096dd80e37c12ec5a301b771ff011fc00ce..95bee3e1cb676e462750a8c46cf6439a3e3e6cc0:/src/adns.h?ds=sidebyside diff --git a/src/adns.h b/src/adns.h index a29b568..a903934 100644 --- a/src/adns.h +++ b/src/adns.h @@ -1,16 +1,17 @@ /* * adns.h - * - adns user-visible API (single-threaded, without any locking) + * - adns user-visible API */ /* * * This file is - * Copyright (C) 1997-2000 Ian Jackson + * Copyright (C) 1997-2000,2003,2006 Ian Jackson * * It is part of adns, which is - * Copyright (C) 1997-2000 Ian Jackson - * Copyright (C) 1999-2000 Tony Finch - * + * Copyright (C) 1997-2000,2003,2006 Ian Jackson + * Copyright (C) 1999-2000,2003,2006 Tony Finch + * Copyright (C) 1991 Massachusetts Institute of Technology + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) @@ -400,6 +401,18 @@ typedef struct { * requested. */ +/* Threads: + * adns does not use any static modifiable state, so it + * is safe to call adns_init several times and then use the + * resulting adns_states concurrently. + * However, it is NOT safe to make simultaneous calls into + * adns using the same adns_state; a single adns_state must be used + * only by one thread at a time. You can solve this problem by + * having one adns_state per thread, or if that isn't feasible, you + * could maintain a pool of adns_states. Unfortunately neither of + * these approaches has optimal performance. + */ + int adns_init(adns_state *newstate_r, adns_initflags flags, FILE *diagfile /*0=>stderr*/);