win32 연동 기능은 데이터의 원자 적 작동을 위주로합니다. 스레드로부터 안전하고 다중 프로세서로 안전해야합니다. 데이터가 정렬되지 않으면 어떻게됩니까? 연동 된 연산은 여전히 원자 적입니까? 예 : 정렬되지 않은 정수를 증가시킵니다. 32에 정렬되어야합니다이 "변수가 가산 할 매개 변수가 가리키는 : 당신이 연동 API 기능의 대부분을 읽으면 타이
나는 Interlocked를 사용해야하는 일반 클래스를 작성하고 있습니다. T test1, test2;
Interlocked.Exchange<T>(ref test1, test2);
이것은 컴파일되지 않습니다. 그래서 나는 대신 Exchange (Object, Object)를 사용하도록 강요합니까? MSDN 어드바이스로도 사용하지 마십시오.
InterlockedIncrement 함수에 대해 읽는 동안 전달 된 변수는 32 비트 경계에 정렬되어야한다는 것을 알았습니다. 일반적으로 나는이 같은 InterlockedIncrement를 사용하는 코드를 보았다 : class A
{
public:
A();
void f();
private:
volatile long m_c
은 가정하자 나는 "카운터"변수가 있고, 즉, 액세스하고 연동 사용하여 "카운터"의 값을 설정하는 여러 스레드가 : int value = Interlocked.Increment(ref counter);
및 int value = Interlocked.Decrement(ref counter);
내가 가정 할 수는 Interlocked가 변경 한 내용은