www-content/pages/program_guide/threading/thread_safety.txt

31 lines
1.4 KiB
Plaintext

{{page>index}}
-------
===== Thread Safety =====
If several strings have to work on the same resources, conflicts can happen as
the threads are run in parallel. For example, if thread A modifies several
values while thread B is reading them, it is likely that some of the values
read by B are outdated. Similar issues can happen if both threads are
modifying data concurrently.
These kinds of conflicts are called race-conditions: depending on which thread
is faster, the output changes and can be incorrect. Avoiding such issues is
called thread safety. Thread safety involves critical sections, which are
blocks of code that operate on shared resources and must not be accessed
concurrently by another thread.
The usual solution for ensuring exclusive access to shared resources is mutual
exclusion: only 1 thread can operate on the data at any given time. Mutual
exclusion is often implemented through locks. Before attempting to operate on
a shared resource, the thread waits until it can lock something called a mutex
(stands for mutual exclusion), then operates on the resource, and unlocks the
mutex. Operating systems guarantee that only 1 thread can lock a mutex at a
given time: this ensures that only 1 thread operates on the shared resource at
one time.
For more information on thread safety, see
[[/program_guide/threading/low-level_functions|Low-level Functions]].
------
{{page>index}}