이 메소드는 루프와 CAS를 사용합니다. 원자 적으로 현재 값을로드하고 새 값을 계산하며 업데이트를 시도합니다. 실패는 업데이트 된 값으로 재 시도됩니다고성능 컴퓨팅 및 동시 프로그래밍의 세계에서 공유 데이터 구조를 최적화하는 것이 가장 중요합니다. 잠금 장치 데이터 구조는 매력적인 솔루션을 제공하여 확장 성을 향상시키고 다중 스레드 애플리케이션에서 경합을 최소화합니다. GO 개발자가 성능에 중점을 두면서 이러한 알고리즘을 광범위하게 연구하고 구현했습니다. Go의 고유 한 동시성 기능과 효율적인 쓰레기 수집은 자물쇠가없는 개발에 이상적입니다. 패키지는 기본 빌딩 블록을 제공합니다-원자 운영은 고어 라틴에서 간섭없는 메모리 액세스를 보장합니다. CAS (Compar-and-Swap) 작업은 잠금없는 프로그래밍의 중심입니다. 이 원자 명령어는 현재 값이 예상 값과 일치하는 경우에만 메모리 위치를 업데이트합니다. 간단한 잠금 카운터로 이것을 설명해 봅시다 :
는 삽입을 위해 CAS를 사용합니다. 프로덕션 준비 버전에는 크기 조정,보다 강력한 해시 기능 및 분할 주문 목록과 같은 잠재적 기술이 필요합니다.
atomic
<code class="language-go">import (
"sync/atomic"
)
type Counter struct {
value int64
}
func (c *Counter) Increment() int64 {
for {
oldValue := atomic.LoadInt64(&c.value)
newValue := oldValue + 1
if atomic.CompareAndSwapInt64(&c.value, oldValue, newValue) {
return newValue
}
}
}</code>
Get
Put
101 권
Aarav Joshi가 공동 창립 한 우리의 창조물
투자자 중앙 | 투자자 중앙 스페인어 | 투자자 중앙 독일어 | 똑똑한 생활 | 에포크 & 에코 | 수수께끼의 미스터리 | Hindutva | 엘리트 데브 | JS 학교
위 내용은 GO의 잠금없는 데이터 구조 마스터 링 : 동시 성능을 향상시킵니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!