일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- http
- API
- range
- package
- GO 언어
- c++
- File
- windows
- json
- bitcoin
- window
- Close
- write
- 리뷰
- install
- 책
- FOR
- JavaScript
- channel
- 영화
- go
- Sync
- go언어
- Linux
- tcp
- C
- Golang
- Python
- mutex
- Callback
- Today
- Total
목록pool (2)
Code Habit
풀은 객체(메모리)를 사용한 후 보관해두었다가 다시 사용하게 해주는 기능이다. 객체를 반복해서 할당하면 메모리 사용량도 늘어나고, 메모리를 해제해야 하는 가비지 컬렉터에게도 부담이 된다. 즉 풀은 일종의 캐시라고 할 수 있으며 메모리 할당과 해제 횟수를 줄여 성능을 높이고자 할 때 사용한다. 그리고 풀은 여러 고루틴에서 동시에 사용할 수 있다. Sync 패키지에서 제공하는 풀의 구조체와 함수는 다음과 같다. sync.Pool func (p *Pool) Get() interface{} : 풀에 보관된 객체를 가져옴 func (p *Pool) Put(x interface{}) : 풀에 객체를 보관 사용 예제이다. package main import ( "fmt" "math/rand" "runtime" "sy..
Go 언어에서는 채널 이외에도 고루틴의 실행 흐름을 제어하는 동기화 객체를 제공한다. 대표적인 동기화 객체는 다음과 같다. Mutex: 상호배제(mutual exclusion)라고도 하며 여러 스레드(고루틴)에서 공유되는 데이터를 보호할 때 주로 사용한다. RWMutex: 읽기/쓰기 뮤텍스이다. 읽기와 쓰기 동작을 나누어서 잠금(락)을 걸 수 있다. Cond: 조건 변수(condition variable)이다. 대기하고 있는 하나의 객체를 깨울 수도 있고 여러 개를 동시에 깨울 수도 있다. Once: 특정 함수를 딱 한 번만 실행할 때 사용한다. Pool: 멀티 스레드(고루틴)에서 사용할 수 있는 객체 풀이다. 자주 사용하는 객체를 풀에 보관했다가 다시 사용한다. WaitGroup: 고루틴이 모두 끝날 ..