Oracle® Solaris Studio 12.4:线程分析器用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

什么是数据争用?

    线程分析器可检测多线程进程执行期间发生的数据争用。满足以下所有条件时,就会发生数据争用:

  • 一个进程内的两个或多个线程同时访问同一内存位置

  • 至少其中一个访问是用于写入

  • 线程未使用任何互斥锁来控制它们对该内存的访问

这三个条件成立时,访问的顺序是不确定的,每次运行的计算结果都可能因该顺序而异。有些数据争用可能是良性的(例如,内存访问用于忙等待时),但许多数据争用都属于程序中的错误。

线程分析器适用于用 POSIX 线程 API、Oracle Solaris 线程 API、OpenMP 或混用这几者编写的多线程程序。