A data sharing problem happens when two tasks access the same memory location, and the behavior of the program depends on the order of accesses. This group of topics describes two common data access patterns - incidental sharing and independent updates - that result in data sharing problems that are relatively easy to fix. The fixes are described in Problem Solving Strategies.
In the topic Pointer Dereferences, we saw that there are techniques for dealing with incidental sharing of pointer-accessed storage in particular cases.
In general, to deal with sharing problems at indirect references you have to really understand what your program is doing. You cannot just do a text search for all the uses of a shared location and apply some transformation mechanically.
Sometimes the loop control is spread across complex control flow. Using Intel TBB or Intel Cilk Plus in this situation requires more features than the simple loops. Note that the task body must not access any of the auto variables defined within the annotation site, because they may have been destroyed before or while the task is running. Consider this serial code:
Data collected by running Intel® Advisor tools is stored in a result. When you run one of its tools, the Intel® Advisor executes a target, identifies issues that may need handling, collects the results and shows it in the Results subdirectory in the Solution Explorer in Microsoft Visual Studio* or in the Project Navigator in the Intel Advisor Standalone GUI.