c multithreading - Serbipunk/notes GitHub Wiki
variable specifier
alignas
struct alignas(64) ThreadData {
int value;
// ๅฉไฝ60ๅญ่่ชๅจๅกซๅ
๏ผไธไผไธๅ
ถไปๆฐๆฎๅ
ฑไบซ็ผๅญ่ก
};
alignas(float)
alignas is an alignment specifier that lets you manually override the compiler's default alignment for a variable or struct.
struct ThreadData {
int value; // alignment: 4
};
// default alignment: 4 bytes
Memory layout (two threads' data could end up in the same cache line): [ ThreadData_A ][ ThreadData_B ] [โโโโโโโโโโ 64-byte cache line โโโโโโโโโโโ]
alignof()
struct alignas(std::hardware_destructive_interference_size) ThreadData {
int value;
};