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 | 29 | 30 | 31 |
Tags
- 원카페#무인카페#카페추천#카페맛집
- Harvard
- Unreal
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- Console
- 폭설 #미친 날씨
- Gas
- 네트워크 기초
- topdownmove
- CS
- 툰쉐이딩
- 코드리뷰
- c++ 베이직
- leetcode
- build.cs
- STL
- 백준
- 브론즈
- CS50
- 메테리얼
- Module
- Toon Shading
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- 언리얼
- A* Algorithm
- C++
- 헤더 경로
- UE_5
- 순환 리스트
Archives
- Today
- Total
WN_인생기록
thread 본문
맨날 나중에 배워야지 하고 넘어갔던 부분이다.
정의는 프로그램내에서 동시에 실행될 수 있는 실행 단위를 뜻한다.
멀티 스레드란 하나의 프로세스 안에서 여러 스레드를 생성하여 병렬로 작업을 처리할 수 있게 하는 기능이다.
#include <iostream>
#include <thread>
using namespace std;
void makelog()
{
cout << "log play" << "\n";
}
// single thread
// 하나의 프로세스
// 그런데 여기에 추가적으로 스레드를 추가해서 병렬로 일 처리가 가능함
// 하나의 채널이 새로 생긴다고 생각해도 괜찮을듯
// 그런데 프로세스에서 공유하고 있는건 code 와 data 같은 부분들은 공유됨.
// 예시로 log 같은걸 중간에 넣고 싶은데, 같은 thread 에서 추가하게되면 일처리가 멈추고 log을 출력하니까
// log를 넣어주는 다른 thread를 넣으면 좀더 빠르게 리소스를 활용하는 셈임
int main()
{
cout << "Process Start" << "\n";
int a = 3;
int b = 1;
int c = a * b;
thread t1(makelog);
thread t2 (makelog);
// 람다 함수도 스레드 처리가 가능함
thread t3([]
{
cout << "log play?" << "\n";
});
t1.join();
t2.join();
t3.join();
// 스레드의 순서는 프로세스에 따라서 달라짐. 명시적으로 순서를 적용하고싶으면 다른 방법을 써야함
cout << "Process End" << "\n";
}
'C++ > 탐구' 카테고리의 다른 글
A* Algorithm -4 (완) (0) | 2024.04.01 |
---|---|
A* Algorithm -3 (0) | 2024.04.01 |
Lvalue? Rvalue? (0) | 2024.03.24 |
While (0) | 2024.03.20 |
Reference (0) | 2024.03.20 |