mirror of
https://github.com/isocpp/CppCoreGuidelines.git
synced 2024-03-22 13:30:58 +08:00
Fix spelling / expand dictionary.
This commit is contained in:
parent
e8ecae3171
commit
3768e82fc3
|
@ -11641,7 +11641,7 @@ approaches) is particularly valuable here.
|
||||||
|
|
||||||
In the realm of static enforcement,
|
In the realm of static enforcement,
|
||||||
both [clang](http://clang.llvm.org/docs/ThreadSafetyAnalysis.html) and some
|
both [clang](http://clang.llvm.org/docs/ThreadSafetyAnalysis.html) and some
|
||||||
older verisons of [gcc](https://gcc.gnu.org/wiki/ThreadSafetyAnnotation) have
|
older versions of [GCC](https://gcc.gnu.org/wiki/ThreadSafetyAnnotation) have
|
||||||
some support for static annotation of thread safety properties. Consistent use
|
some support for static annotation of thread safety properties. Consistent use
|
||||||
of this technique turns many classes of thread-safety errors into compile-time
|
of this technique turns many classes of thread-safety errors into compile-time
|
||||||
errors. The annotations are generally local (marking a particular member
|
errors. The annotations are generally local (marking a particular member
|
||||||
|
@ -11650,12 +11650,12 @@ learn. However, as with many static tools, it can often present false
|
||||||
negatives - cases that should have been caught but were allowed.
|
negatives - cases that should have been caught but were allowed.
|
||||||
|
|
||||||
Clang's [Thread Sanitizer](http://clang.llvm.org/docs/ThreadSanitizer.html) (aka
|
Clang's [Thread Sanitizer](http://clang.llvm.org/docs/ThreadSanitizer.html) (aka
|
||||||
tsan) is a powerful example of dynamic tools: it changes the build and execution
|
TSAN) is a powerful example of dynamic tools: it changes the build and execution
|
||||||
of your program to add bookkeeping on memory access, absolutely identifying data
|
of your program to add bookkeeping on memory access, absolutely identifying data
|
||||||
races in a given execution of your binary. The cost for this is both memory
|
races in a given execution of your binary. The cost for this is both memory
|
||||||
(5-10x in most cases) and CPU slowdown (2-20x). Dynamic tools like this are best
|
(5-10x in most cases) and CPU slowdown (2-20x). Dynamic tools like this are best
|
||||||
when applied to integration tests, canary pushes, or unittests that operate on
|
when applied to integration tests, canary pushes, or unittests that operate on
|
||||||
multiple threads. Workload matters: When tsan identifies a problem, it is
|
multiple threads. Workload matters: When TSAN identifies a problem, it is
|
||||||
effectively always an actual data race, but it can only identify races seen in a
|
effectively always an actual data race, but it can only identify races seen in a
|
||||||
given execution.
|
given execution.
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
'
|
'
|
||||||
0xFF0000
|
0xFF0000
|
||||||
0b0101'0101
|
0b0101'0101
|
||||||
|
10x
|
||||||
'14
|
'14
|
||||||
|
20x
|
||||||
2D
|
2D
|
||||||
2K
|
2K
|
||||||
2ndEdition
|
2ndEdition
|
||||||
|
@ -69,6 +71,7 @@ CComPtr
|
||||||
cerr
|
cerr
|
||||||
chrono
|
chrono
|
||||||
cin
|
cin
|
||||||
|
Clang's
|
||||||
class'
|
class'
|
||||||
clib
|
clib
|
||||||
Cline99
|
Cline99
|
||||||
|
@ -492,6 +495,7 @@ toolchains
|
||||||
TotallyOrdered
|
TotallyOrdered
|
||||||
TP
|
TP
|
||||||
tradeoff
|
tradeoff
|
||||||
|
TSAN
|
||||||
TSs
|
TSs
|
||||||
tt
|
tt
|
||||||
typeid
|
typeid
|
||||||
|
|
Loading…
Reference in New Issue
Block a user