A race condition means that timing or ordering of events can impact the result of execution.

A data race happens when there are two memory access that are

  • at same location
  • performed concurrently and not synchronized
  • not both read

There are considerable overlaps but it is possible to have a race condition without a data race or vice versa.

Reference