1. 경쟁 상태 (Race condition)경쟁 상태는 둘 이상의 스레드가 공유 데이터에 동시에 접근하여 예측할 수 없는 결과를 초래하는 상황을 말한다. ex)#include #include int num = 0;void Increment() { for (int i = 0; i 위 예시에서 `num`은 race condition의 대상이 된다.두 스레드가 동시에 이 변수를 증가시키려고 하면, 일부 연산이 손실될 수 있다. 2. 임계 영역(Critical Section)임계 영역은 여러 스레드가 동시에 접근해서는 안 되는 공유 자원을 접근하는 코드 영역을 말한다.임계 영역에 대한 접근은 상호 배제(mutual exclusion)를 통해 동기화되어야 한다. 임계 영역의 특성 :- 한 번에 하나의 ..
1. 스레드 생성 방법C++에서 스레드를 생성하는 방법 1) std::thread 클래스 사용:#include #include void ThreadFunction() { std::cout 2) 람다 함수 사용:#include #include int main() { std::thread t([](){ std::cout 3) 함수 객체(Functor) 사용:#include #include class ThreadFunctor {public: void operator()() { std::cout 2. 스레드 생명주기1) 생성(Created): std::thread 객체가 생성되면 새로운 스레드가 시작됨2) 실행 가능(Runnable): 스레드가 실행될 준비가 되었지만, ..
1. 프로세스와 스레드 프로세스 (Process)실행 중인 프로그램의 인스턴스특징: - 독립된 메모리 공간 - 운영체제로부터 자원을 할당받음 - 최소 하나의 스레드(메인 스레드) 포함 - 독립적인 메모리 공간을 가짐(코드, 데이터, 힙, 스택) 스레드 (Thread)프로세스 내에서 실행되는 흐름의 단위 특징: - 같은 프로세스 내의 스레드들은 메모리 공간을 공유 - 빠른 생성과 컨텍스트 스위칭 - 병렬 처리 가능 - 스택만 독립적으로 갖고 나머지는 프로세스 내에서 공유 2. 멀티스레딩의 장단점 장점1) 성능 향상: 여러 작업을 동시에 처리하기 때문에 프로그램의 실행 속도가 빨라짐2) 응답성 향상: 한 스레드의 작업이 길어져도 프로그램이 계속 실행되기 때문에 사용자의 응답성이 증가3) 자..
그동안 공부했던 멀티스레딩 관련 내용을 블로그에 정리해두려고 합니다. 제가 서버 공부를 C++로 해서 여기서 다룰 모든 예시는 C++ 기반입니다. 목차 1. 멀티스레딩 기초 2. 스레드 생성과 관리 3. 데이터 동기화 기초 4. 메모리 구조와 멀티스레딩 5. 동기화 기법: Atomic 연산 6. 동기화 기법: Lock 7. 동기화 기법: Mutex 8. 데드락(Deadlock) 9. 스핀락(Spinlock) 10. Condition Variable 11. 고급 동기화 기법 12. 스레드 풀(Thread Pool) 독학중이라 틀린 내용이 있을 수도 있고 부족한 내용이 있을수도 있습니다. 댓글로 남겨주시면 내용에 반영하겠습니다.
1. 개요서버를 공부하면서 멀티스레드와 유니티에서의 비동기의 관계가 헷갈려서 정리했었던 내용의 일부이다.최근에 같이 공부하던 친구가 궁금하다고 해서 유니티부분만 정리해 줬는데, 그 내용을 공유한다. 2. 기본 개념2.1 동기 vs 비동기동기(Synchronous):작업이 순차적으로 실행되며, 각 작업은 이전 작업이 완료될 때까지 기다린다. 장점: - 코드의 흐름이 예측 가능하고 디버깅이 쉽다. - 데이터 일관성을 유지하기 쉽다. 단점: - I/O 작업 등으로 인한 대기 시간 동안 리소스가 낭비될 수 있다. - 사용자 인터페이스가 응답하지 않을 수 있다. 비동기(Asynchronous):작업이 병렬적으로 실행되며, 한 작업의 완료를 기다리지 않고 다음 작업을 시작할 수 있..
1. 개요요새 볼만한 강의나 책을 추천해달라는 얘기를 한번씩 받는데, 어떤 내용을 어디서 봤는지 헷갈리는 경우가 좀 있어서 읽은 책이나 강의에 대해 짤막하게 후기를 남기려고 한다. 참고로 나는 세상에 완벽한 책이나 강의는 없다고 생각한다.한 책을 완벽하게 외워도 다른 책을 보면 같은 내용을 다른 관점에서 다른 방향으로 설명한다.그래서 한 책을 몇번이고 읽어서 완전히 외우는 것보다 기초 강의부터 시작해서 다양한 책이나 강의를 보는게 낫다고 생각한다. 2. 강의기초개념혼자 공부하는 컴퓨터 구조 + 운영체제https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0HlC언어 문법을 한번 훑고 CS지식이 필요할 것 같아서 본 강의혹시 이 글을..