어떤 이유로 든이 작업을 수행 할 수 없습니다 (코드 참조). 문서에서 보았다 ... 작동하지 이것에 대한 이유가std :: atomic 및 custom 구조체와 관련된 문제
struct vector {
float x, y, z;
};
std::atomic<vector> Name = {0};
이하지 않는 것 그것은 내가 초기화 목록을 초기화 할 수 없습니다라고, 나는 그것을 사용에 갈 때 내 코드에 회원이 없다고 말합니다.
Name.x = 4.f;
Name.y = 2.f * Name.x;
Name.z = 0.1f;
아니요, 그렇지 않습니다.여기서하고있는 일은 내부 구현 세부 사항을 다루는 것입니다. 의도대로 작동하지 않습니다. –
메모리 울타리를 건너 뜁니다. 이러한 작업은 원자 적이지 않습니다. –
구조체를 원자 단위로 나누고 싶습니까, 아니면 전체 구조체를 단일 원자 단위로 사용 하시겠습니까? 어쨌든 이것은 12 바이트 구조체가 lock-free가 아닌 MSVC에서만 컴파일되므로 다른 원자 연산의 원 자성을 깨뜨릴 수 있습니다. https://godbolt.org/g/ji6ABT ** 다른 컴파일러에서도 컴파일되지 않습니다. ** –