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 *
-Link with F<librrd_th> instead of with F<librrd> (use C<-lrrd_th> when
+Link with F<librrd_th> instead of F<librrd> (use C<-lrrd_th> when
linking)
=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 *
Never use non *C<_r> functions unless it is explicitly documented that
-the function is tread-safe
+the function is tread-safe.
=item *
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
=item *
-Many other (lookup documentation)
+Many others (lookup documentation)
=back
=item *
-Do not use C<getopt> or C<getopt_long> in *C<_r> (directly or
-indirectly)
+Do not use C<getopt> or C<getopt_long> in *C<_r> (neither directly nor
+indirectly).
C<getopt> uses global variables and behaves badly in a multi-threaded
application when called concurrently. Instead provide a *_r function
Do not use the C<parsetime> 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<rrd_create>, but not in C<rrd_create_r>)
=back
=head2 CURRENTLY IMPLEMENTED THREAD SAFE FUNCTIONS
-Currently there exit thread-safe variants of C<rrd_update>,
+Currently there exist thread-safe variants of C<rrd_update>,
C<rrd_create>, C<rrd_dump>, C<rrd_info> and C<rrd_last>.
=head1 AUTHOR