Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- PETERICA
- kotlin coroutine
- Java
- 티스토리챌린지
- kotlin spring
- AI
- aws
- 정보처리기사실기 기출문제
- Elasticsearch
- minikube
- Spring
- CKA
- kotlin
- Linux
- IntelliJ
- 정보처리기사 실기
- mysql 튜닝
- 오블완
- CloudWatch
- APM
- AWS EKS
- 공부
- 코틀린 코루틴의 정석
- Kubernetes
- 기록으로 실력을 쌓자
- 정보처리기사 실기 기출문제
- CKA 기출문제
- Pinpoint
- kotlin querydsl
- MySQL
Archives
- Today
- Total
피터의 개발이야기
[GO] Go 언어에서 sync.Map 사용하기 본문
반응형
ㅁ 들어가며
ㅇ Go 언어의 sync.Map
은 동시성 안전한 맵 구현을 제공한다. 일반 map
과 달리 여러 고루틴에서 동시에 안전하게 사용할 수 있다. sync.Map의 초기화 및 기본적 사용법을 정리하였다.
ㅁ sync.Map 초기화
sync.Map
은 별도의 초기화가 필요 없었다.
var m sync.Map
ㅁ주요 메서드
Store(key, value interface{})
m.Store("key", "value")
ㅇ 맵에 키-값 쌍을 저장
Load(key interface{}) (value interface{}, ok bool)
value, ok := m.Load("key")
if ok {
fmt.Println("Value:", value)
}
ㅇ 키에 해당하는 값을 조회
Delete(key interface{})
m.Delete("key")
ㅇ 키-값 쌍을 삭제
LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)
actual, loaded := m.LoadOrStore("key", "new value")
ㅇ 키가 존재하면 기존 값을 반환하고, 없으면 새 값을 저장
Range(f func(key, value interface{}) bool)
m.Range(func(key, value interface{}) bool {
fmt.Printf("Key: %v, Value: %v\n", key, value)
return true
})
ㅇ 맵의 모든 키-값 쌍을 순회
ㅁ 사용 시 주의사항
sync.Map
은 일반 맵보다 메모리를 더 사용할 수 있다.- 키와 값의 타입이
interface{}
이므로 타입 안전성을 위해 타입 단언이 필요할 수 있다. - 읽기 작업이 많고 쓰기가 적은 경우에 성능상 이점이 있다.
ㄴ 공식 벤치 마크
ㄴ sync.Map의 성능
ㅁ 마무리
sync.Map
은 동시성 안전성이 필요한 상황에서 유용하지만, 단일 고루틴 환경에서는 일반 맵이 더 효율적일 수 있다.
ㅁ 함께 보면 좋은 사이트
ㅇ jacking75 - golang - sync.Map
반응형
'Programming > GO' 카테고리의 다른 글
[GO] Go에서 함수와 메서드, 그리고 포인터 메서드와 값 타입 메서드 차이 (0) | 2025.02.21 |
---|---|
[GO] Go의 fsnotify 라이브러리를 활용한 파일 시스템 감시 (0) | 2025.02.20 |
[GO] Golang에서 Linux 명령어 실행 및 관리하기 (0) | 2025.02.17 |
[GO] Go Race Detector: 동시성 버그를 잡아내는 강력한 도구 (0) | 2025.02.16 |
[GO] Go 언어에서의 "fatal error: concurrent map read and map write" 해결하기 (0) | 2025.02.15 |
Comments