A. 쓰레드
1. 쓰레드 실습
a. 기초 쓰레드 생성
쓰레드를 만들어서 사용하는 연습하기
않이 겁나 열심히 만들어서 쓰고있었는데 갑자기 다 날라갔다
새로운 쓰레드를 만들어보자
메인에서 std::thread t(HelloThread) 실행
위 코드를 실행하면 스레드를 하나 더 만들 수 있음
Hellothread()인자가 있어야 실행됨
💥 위 코드를 실행하면 오류가 발생된다
이유는 메인 스레드가 원래 존재하는데,
새로운 쓰레드가 생성되고 종료되기도 전에 메인이 종료되어서 그럼
따라서 아래와 같이 작성
t.join(); 을 사용하면 종료된 쓰레드를 모아주는 역할을 한다 (끝난지 확인? 정도)
joinable()을 사용해서 이중체크를 해도 되는데 안해도됨
✨ 근데 여기서 알아둬야할게 있음
스레드를 이렇게 임의로 생성해주면, 브레이크 포인트를 걸어도 그게 아닐 수있따 (영혼이 2개??!)
그래서 나는 여기서 코드를 실행해도 다른 스레드가 실행되는 환경이 있을 수 있어서
매우 조심해서 사용해야 함
b. Multi Thread 생성
스레드를 여러개 만들고싶으면
코드를 여러개 작성하거나
벡터로 관리해도 됨
위 코어보다 더 많은 스레드는 생성해봤자 의미가 없어짐
c. 쓰레드(직원)을 몇명까지 만들어야 할까?
코어를 넘어서는 쓰레드는 영혼이 왔다 갔다 하면서 하는 비용도 있음
따라서 굳이 좋아지는게 절대 아님 (월급이 없어서 파산함)
서버 전용 컴퓨터는 코어가 많아서 많이 사용할 수 있음
멀티스레드와 메모리
-- 어려워지는 것
메모리 영역중에 힙, 데이터 메모리 영역은 공유해서 사용하기 때문에 주의해야 함
(코드, 스택은 괜찮음)
멀티스레드는 프로그래밍의 흑마법..
실전 프로젝트에서 이쪽 이슈를 얻어터지면 매우 부담스럽게 느껴진다
하지만 mmorpg 를 만들기 위해선 꼭 있어야 하는 내용
'운영체제' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 락 기초, 스핀락, 데드락 (0) | 2024.12.03 |
---|---|
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 공유자원 (0) | 2024.12.03 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 캐시와 CPU 파이프라인 (1) | 2024.12.03 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 멀티쓰레드 입문 (116강) (1) | 2024.11.18 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 서버 (115강) (1) | 2024.11.18 |