일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- window
- tcp
- FOR
- windows
- JavaScript
- GO 언어
- 책
- json
- Sync
- Golang
- mutex
- write
- bitcoin
- channel
- Linux
- package
- API
- Callback
- install
- go언어
- Close
- http
- File
- 영화
- C
- range
- 리뷰
- go
- c++
- Python
- Today
- Total
목록쓰레드 (3)
Code Habit

C++ 개발을 하면서 여러 일을 동시에 처리해야 할때 멀티 쓰레드를 사용하여 처리한다. 이때 여러 쓰레드에서 동시에 일을 처리하기 위해 코어에서 쓰레드 사이를 옮겨다니며 컨텍스트 스위칭이 발생하는데 이는 자칫하면 부하를 일으켜 성능 저하를 유발하곤 한다. 하여 Go언어에서는 컨텍스트 스위칭 비용을 절약하기 위해 Go루틴이라는 Go 런타임에서 직접 관리하는 경량쓰레드를 제공한다. Go루틴은 명령을 수행하는 단일 흐름으로 OS 스레드를 이용하는 경량 스레드이다. Go언어는 CPU 코어, OS 스레드, 소루틴을 서로 조율하여 사용해 고루틴을 효율적으로 다룬다. 고루틴을 이용하면 코어와 스레드는 변경되지 않고 오직 고루틴만 옮겨 다니기 때문에 컨텍스트 스위칭이 일어나지 않는다. OS 스레드를 직접 사용하는 다른..
설 명 쓰레드의 가장 안전한 종료 방법은 쓰레드 함수가 모든일을 처리하고 return 하는 것이다. flag를 이용하여 쓰레드 함수를 안정적으로 종료 시킨다. Waitforsingleobject 함수를 이용하여 쓰레드가 안정적으로 종료될때까지 기다린다. 이때 Waitforsingleobject 함수 사용 시 프로그램이 행에 걸릴 수 있으므로 적당한 제한 시간을 두고 쓰레드 함수가 미종료시 TerminateThread함수로 강제 종료할 수 있다. ( 권장x ) 예 제 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 32 33 34 #include // bool g_threadSwitch = true; //..
MFC 특징 MFC 객체는 스레드에 안전한 구조가 아니다. MFC 객체에 접근(Access)하기 위해서는 CWinThread 객체를 사용한 스레드여야 한다. ( User-Interface Thread, Worker Thread) User-Interface Thread와 Worker Thread의 차이 : User-Interface Thread는 스레드 자체의 메시지 큐를 가지며 일반적으로 UI를 포함한다. MFC 객체는 그것을 생성한 스레드에서만 접근할 수 있다. MFC는 윈도우 핸들과 윈도우 객체를 연결하는 맵( Windows Handle Maps)을 가지는데 이것은 스레드의 로컬 영역에 저장되기 때문이다. Worker Thread에서 UI관련 객체 생성 및 접근은 위험하다. Dead lock에 빠질 ..