일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- API
- go
- channel
- json
- Linux
- 책
- Python
- JavaScript
- c++
- write
- 영화
- 리뷰
- GO 언어
- range
- Close
- window
- package
- bitcoin
- go언어
- mutex
- Sync
- windows
- Golang
- install
- Callback
- tcp
- FOR
- C
- File
- http
- Today
- Total
목록go루틴 (2)
Code Habit
컨텍스트(context)는 context 패키지에서 제공하는 기능으로 작업을 지시할 때 작업 가능 시간, 작업 취소 등의 조건을 지시할 수 있는 작업 명세서 역할을 합니다. 새로운 고루틴으로 작업을 시작할 때 일정 시간 동안만 작업을 지시하거나 외부에서 작업을 취소할 때 사용한다. 또한 작업 설정에 관한 데이터를 전달할 수도 있다. var wg sync.WaitGroup func main() { wg.Add(1) ctx, cancel := context.WithCancel(context.Background()) // 컨텍스트 생성 go PrintEverySecond(ctx) time.Sleep(5 * time.Second) cancel() // 취소 wg.Wait() } func PrintEverySec..

C++ 개발을 하면서 여러 일을 동시에 처리해야 할때 멀티 쓰레드를 사용하여 처리한다. 이때 여러 쓰레드에서 동시에 일을 처리하기 위해 코어에서 쓰레드 사이를 옮겨다니며 컨텍스트 스위칭이 발생하는데 이는 자칫하면 부하를 일으켜 성능 저하를 유발하곤 한다. 하여 Go언어에서는 컨텍스트 스위칭 비용을 절약하기 위해 Go루틴이라는 Go 런타임에서 직접 관리하는 경량쓰레드를 제공한다. Go루틴은 명령을 수행하는 단일 흐름으로 OS 스레드를 이용하는 경량 스레드이다. Go언어는 CPU 코어, OS 스레드, 소루틴을 서로 조율하여 사용해 고루틴을 효율적으로 다룬다. 고루틴을 이용하면 코어와 스레드는 변경되지 않고 오직 고루틴만 옮겨 다니기 때문에 컨텍스트 스위칭이 일어나지 않는다. OS 스레드를 직접 사용하는 다른..