트랜잭션 메모리 란 무엇입니까?
소프트웨어의 트랜잭션 메모리 체계는 데이터베이스가 사용하는 트랜잭션과 매우 유사한 트랜잭션을 사용하는 멀티 스레드 프로그래밍을위한 조치입니다. 둘 이상의 스레드가 동시에 동일한 데이터에 동시에 액세스하려고 시도하면, 많은 다른 바람직하지 않은 상황에서 프로그램의 결과가 스레드 액세스 순서에 의존하는 경우가 발생할 수 있습니다. 일반적으로 하나의 순서가 필요하며 멀티 스레딩에서 잠금 장치는 단일 스레드 만 한 번에 특정 리소스에 액세스 할 수 있도록하는 우세하고 간단한 방법입니다.
트랜잭션 메모리에 대한이 접근법에는 다중 리딩의 잠금과 관련하여 여러 가지 문제가 포함됩니다. 예상치 못한 오류가 발생하면 자물쇠가 영구적이 될 수 있으며 잠금은 교착 상태 나 우선 순위 역전과 같은 동시성으로 예측할 수없는 문제를 가져올 수 있습니다. 자물쇠가 매우 세밀하게 입력 된 결과, 또 다른 문제는 코드가 결국 잠금, 컨텍스트 스위칭 및 UNL 사이에 대부분의 시간을 소비하게됩니다.오킹. 이것은 프로그램에서 다른 중요한 작업을 수행하는 것보다 코드가 이러한 행동에 더 많은 시간을 소비 할 수 있기 때문에 중요한 문제입니다. 대조적으로, 거친 입자 잠금 장치는 처리 성능을 줄이고 동시성 감소를 유발할 수 있습니다.
트랜잭션 메모리의 문제는 C#의 "잠금 블록", 읽기 작성 잠금, 쓰기 장벽 등을 포함한 고급 잠금으로 해결됩니다. 트랜잭션 메모리와 관련하여 주요 우선 순위 중 하나는 잠금 장치가없고 불필요한 잠금 처리 시간이없는 것입니다. 일반적으로 공유 된 데이터 구조는 운영에 상호 배제가 필요하지 않은 경우 자물쇠가 없음에 동의합니다. 공유되고 자물쇠가없는 데이터 구조는 동시에 매우 동시에있는 시스템에있는 경우 표준 잠금 기술과 일반적으로 관련된 문제를 피합니다.
트랜잭션 메모리 일관성 및 일관성 (TCC) 모델은 새로운 것입니다.공유 메모리에 대한 제안 된 모델. 이 모델에 따르면, 원자 트랜잭션은 평행 작업, 메모리 일관성, 통신 및 메모리 참조의 일관성의 기본 단위입니다. TCC 모델은 또한 표준 잠금 또는 세마포어를 사용하는 동기화를 제거하여 병렬 소프트웨어를 더 간단하게 만듭니다. TCC는 하드웨어를 통해 트랜잭션 발생 영역의 각 쓰기를 하나의 패킷으로 결합하여 패킷을 영구적으로 공유하는 메모리 상태로 원자 적으로 방송합니다. 단순화 된 Coherence 하드웨어 외에도, 이는 저조도 메시지가 감소하고 특정 표준 일관성 프로토콜을 완전히 제거 할 수 있음을 의미합니다.
.