2011-10-19 3 views
6

C# 사양에서는 읽기 및 쓰기가 32 비트 형식 이하의 경우 원자 적이라고 말합니다 (참조뿐만 아니라). 그래서 내 클래스에 Int32 필드가 있다면 여러 스레드가 읽고 쓸 수 있다는 것을 알기 때문에 작업 중에 원자가됩니다. 따라서 캐시 문제는 잠재적 인 문제이지만 그다지 중요하지는 않습니다. 이 질문의)..NET 용 64 비트 시스템에서 원자 읽기/쓰기 크기?

64 비트 시스템에서도 마찬가지입니까? 64 비트 응용 프로그램을 컴파일하면 Int64가 여전히 원자 수가 아닌 것으로 간주됩니까? 아니면 64 비트 시스템에서 컴파일되고 실행되기 때문에 Int64를 읽기/쓰기로 원자 적으로 간주 할 수 있습니까?

+1

물론 의심 스럽다면 '연동'-하지만 아주 좋은 질문입니다. –

답변

3

동일해야합니다 (원자가 아님) - 64 비트 값이 읽기/쓰기가 가능하도록 값을 올바르게 정렬해야하지만 CLR이 항상 Int64 값을 정렬하는 데 필요한 요구 사항이 없다는 것을 알고있는 한 .

여기에 대해 알아 보려면 How to guarantee 64-bit writes are atomic?을 확인하십시오.

관련 문제