Intel® Cilk™ Plus is a deprecated feature. Use OpenMP* or Intel® Threading Building Blocks instead. For more information see Migrate Your Application to use OpenMP* or Intel® TBB Instead of Intel® Cilk™ Plus.

You can use various synchronization mechanisms in the hardware or operating system.

The following lock terms and facts are useful:

  • The following terms are interchangeable: "acquiring", "entering", or "locking" a lock (or "mutex").

  • A strand (or thread) that acquires a lock is said to "own" the lock.

  • Only the owning strand can "release", "leave", or "unlock" the lock.

  • Only one strand can own a lock at a time.

  • tbb::mutex is implemented using underlying OS mutex operations.

Lock contention can create performance problems in parallel programs. Additionally, while locks can resolve data races, programs using locks are often non-deterministic. Avoiding locks whenever possible is recommended.

These problems (and others) are described in detail in the following sections.