线程分析器检测在执行多线程进程的过程中发生的数据争用。在以下情况下会发生数据争用:
单进程中的两个或多个线程同时访问同一内存位置,且
至少一个访问用于写入,且
线程未使用任何互斥锁控制其对该内存的访问。
这三个条件成立时,访问顺序是不确定的,在不同运行中计算提供的结果可能随该顺序而异。有些数据争用可能是良性的(例如,当内存访问用于忙等待时),但是很多数据争用都是程序中的错误。
线程分析器适用于使用 POSIX 线程 API、Solaris 线程 API、OpenMP、Sun 并行指令、Cray 并行指令或上述项的混合编写的多线程程序。