X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fadns.h;h=a9039346324cbe865f43473f6460ba0bb225c907;hb=47a6797e30861e0b59f6badcfb5ef7a1a020befa;hp=befa0b3858f6ab5badb02c4d6d4a9ff8adf11a98;hpb=d72ea83193094e9997237b302943c3d610320516;p=adns.git diff --git a/src/adns.h b/src/adns.h index befa0b3..a903934 100644 --- a/src/adns.h +++ b/src/adns.h @@ -1,6 +1,6 @@ /* * adns.h - * - adns user-visible API (single-threaded, without any locking) + * - adns user-visible API */ /* * @@ -401,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*/);