X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=doc%2Frrdthreads.pod;h=71506e99e58beac49640be9b7313ab96da15dc84;hp=a1f6e742154c5ea195464f197b37ef703610a874;hb=3501907ea29f921eefcae6bd50c3f31eca0e49b2;hpb=d50afc217aaec57e418a55bbe2d20fe996c6e026 diff --git a/doc/rrdthreads.pod b/doc/rrdthreads.pod index a1f6e74..71506e9 100644 --- a/doc/rrdthreads.pod +++ b/doc/rrdthreads.pod @@ -9,37 +9,37 @@ precautions, as the RRD library in its original form was not thread-safe at all. This document describes requirements and pitfalls on the way to use the multi-threaded version of librrd in your own programs. It also gives hints for future RRD development to keep the -library thread-safe.. +library thread-safe. Currently only some RRD operations are implemented in a thread-safe -way. They all end in the usual "C<_r>" prefix. +way. They all end in the usual "C<_r>" suffix. =head1 DESCRIPTION -In order to use the librrd in multi-threaded programs you must: +In order to use librrd in multi-threaded programs you must: =over -=item * +=item * -Link with F instead of with F (use C<-lrrd_th> when +Link with F instead of F (use C<-lrrd_th> when linking) -=item * +=item * -Use the "C<_r>" functions instead or the normal API-functions +Use the "C<_r>" functions instead of the normal API-functions -=item * +=item * Do not use any at-style time specifications. Parsing of such time specifications is terribly non-thread-safe. -=item * +=item * Never use non *C<_r> functions unless it is explicitly documented that -the function is tread-safe +the function is tread-safe. -=item * +=item * Every thread SHOULD call C before its first call to any C function in order to set up thread specific data. This @@ -64,7 +64,7 @@ Some precautions must be followed when developing RRD from now on: Only use thread-safe functions in library code. Many often used libc functions aren't thread-safe. Take care in the following -situations/when using the following library functions: +situations or when using the following library functions: =over @@ -93,7 +93,7 @@ C: use C =item * -Many other (lookup documentation) +Many others (lookup documentation) =back @@ -115,8 +115,8 @@ F and F =item * -Do not use C or C in *C<_r> (directly or -indirectly) +Do not use C or C in *C<_r> (neither directly nor +indirectly). C uses global variables and behaves badly in a multi-threaded application when called concurrently. Instead provide a *_r function @@ -126,18 +126,18 @@ C as an example. =item * -Do not use the C function! +Do not use the C function! -It uses lots of global vars. You may use it in functions not designed -to be thread-safe like functions wrapping the C<_r> version of some +It uses lots of global variables. You may use it in functions not designed +to be thread-safe, like in functions wrapping the C<_r> version of some operation (e.g., C, but not in C) =back =head2 CURRENTLY IMPLEMENTED THREAD SAFE FUNCTIONS -Currently there exit thread-safe variants of C, -C, C, C and C. +Currently there exist thread-safe variants of C, +C, C, C, C, and C. =head1 AUTHOR