Firstly, it is really a guideline to know if performance is important. The cost of these things is often overestimated. Therefore, if you do not find that access to the control structure is in the same order of magnitude as the records, just take any construct semantically best for your use case. That would be common if you had 100 bytes to access the management structure.
Otherwise, if the management structure is a bottleneck, you may not need to use them. C11 has a new concept of _Atomic types and operations, which can be used in cases where there are races in data access. C11 is not yet widely implemented, but probably all modern compilers have extensions that already implement these functions.
Jens gustedt
source share