File: thread_safety.qbk

package info (click to toggle)
boost1.49 1.49.0-3.2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 427,096 kB
  • sloc: cpp: 1,806,930; xml: 101,307; ansic: 43,491; python: 28,668; sh: 11,922; cs: 2,118; perl: 714; makefile: 671; yacc: 456; asm: 353; php: 116; lisp: 60; sql: 13; csh: 6
file content (30 lines) | stat: -rw-r--r-- 1,052 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[section:threads Thread Safety]

The library is fully thread safe and re-entrant provided the function
and class templates in the library are instantiated with
built-in floating point types: i.e. the types `float`, `double` 
and `long double`.  

However, the library [*is not thread safe] when
used with user-defined (i.e. class type) numeric types.

The reason for the latter limitation is the need to
initialise symbolic constants using constructs such as:

   static const T coefficient_array = { ... list of values ... };

Which is always thread safe when T is a built-in floating point type, 
but not when T is a user defined type: as in this case there 
is a need for T's constructors to be run, leading to potential
race conditions.

This limitation may be addressed in a future release.

[endsect] [/section:threads Thread Safety]

[/ 
  Copyright 2006 John Maddock and Paul A. Bristow.
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]