CRITICAL_SECTION for set and get single bool value

前端 未结 4 1713
甜味超标
甜味超标 2021-01-19 11:20

now writing complicated class and felt that I use to much CRITICAL_SECTION.

As far as I know there are atomic operations for some types, th

4条回答
  •  無奈伤痛
    2021-01-19 11:59

    Note: This answer applies to Windows and says nothing of other platforms.

    There are no InterlockedRead or InterlockedWrite functions; simple reads and writes with the correct integer size (and alignment) are atomic on Windows ("Simple reads and writes to properly-aligned 32-bit variables are atomic operations.").

    (and there are no cache problems since a properly-aligned variable is always on a single cache line).

    However, reading and modifying such variables (or any other variable) are not atomic:

    • Read a bool? Fine. Test-And-Set a bool? Better use InterlockedCompareExchange.
    • Overwrite an integer? great! Add to it? Critical section.

提交回复
热议问题