A, B, C 세 개의 스레드가있는 프로그램을 생각해 보겠습니다.스레드 내에서 원자 변수 사용
그들은 공유 전역 객체 G.
나는 A.에 의해 스레드 B에 의해 작성 및 읽기되고 G 내부 원자 변수 (i)를 사용하려면이
내 방식이었다
G에선언 난 같이
:std::atomic<int> i;
기록 스레드 B로부터는 G로의 포인터를 사용하여
G* pG; //this is available inside A and B
pG->i = 23;
그리고 같은 방법으로 스레드 A에서 읽습니다.
int k = pG->i;
이 스레드가이 변수에 동시에 액세스하려고하면 올바른 방법이 있습니까?
B가 쓰기 전에 스레드 A가 값을 읽는다면 프로그램이 얼마나 정확합니까? – JVApen
@JVApen 스레드 A는 사용할 수있는 (초기화 된) 값을 취합니다. –
이 경우 2 개의 스레드에서 i에 액세스하는 것이 정확합니다. 액세스 할 때 스레드 중 하나가 먼저 나타나고 다른 스레드는 변경 사항을 보게됩니다. – JVApen