问题
I wonder if we operate on a catchline or even 64bit word sizes can I concurrently operate on individual bits in a bitset? Say I have 10 threads, each has threadId
. Can all threads concurrently set bits[threadId] = value
?
回答1:
std::bitset::operator[]
Data races
The bitset is accessed (neither the const nor the non-const versions modify the container). The reference returned by the non-const version can be used to access or modify the bits in the bitset. Notice that modifying a single bit may have effects on an undetermined number of other bits in the bitset, thus rendering concurrent access/modification of different bits not thread-safe.
来源:https://stackoverflow.com/questions/39014106/are-bitset-individual-bits-thread-safe-for-per-individual-thread-to-write-into-a