본문 바로가기
반응형

분류 전체보기100

[c++] Observer Pattern ko.wikipedia.org/wiki/%EC%98%B5%EC%84%9C%EB%B2%84_%ED%8C%A8%ED%84%B4 옵서버 패턴 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체 ko.wikipedia.org 옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴입니다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용되며, 발행/구독 .. 2020. 12. 16.
[c++] std::shared_mutex en.cppreference.com/w/cpp/thread/shared_mutex std::shared_mutex - cppreference.com class shared_mutex; (since C++17) The shared_mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads. In contrast to other mutex types which facilitate exclusive access, a sh en.cppreference.com 상호배타적인 다른 mutex들과 달리 shard_mutex는 공유 자.. 2020. 12. 16.
[c++] std::timed_mutex en.cppreference.com/w/cpp/thread/timed_mutex std::timed_mutex - cppreference.com class timed_mutex; (since C++11) The timed_mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads. In a manner similar to mutex, timed_mutex offers exclusive, non-recursive en.cppreference.com mutex와 비슷하게, timed_mutex는 상호배타적이고, 비재귀적인 .. 2020. 12. 16.
[c++] std::recursive_mutex (std::mutex 비교) 일반적으로 mutex의 lock을 두 번 호출하면 무한 대기 상태에 빠지지만, recursive mutex는 lock을 여러 번 호출해도 문제가 없다 lock을 호출하는 동안은 계속 소유권을 가지고 있다가 lock을 호출한 횟수 만큼 unlock을 호출하면 소유권을 해제하기 때문이다 재귀함수를 만들어보면 쉽게 이해할 수 있다 (이름부터 recursive_mutex) 한 번 재귀함수를 병렬처리해보자 그냥 mutex를 사용했을 때 (무한 대기) worker 함수를 호출하는 4개의 스레드를 생성한다 worker 함수는 자기 자신을 다시 호출하는 재귀 함수로 구성한다 result라는 공유자원에 다른 스레드가 접근하지 못하도록 mutex lock을 수행한다 worker 내부에서 worker 함수를 다시 호출하므로.. 2020. 12. 16.
[c++] std::mutex en.cppreference.com/w/cpp/thread/mutex std::mutex - cppreference.com class mutex; (since C++11) The mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads. mutex offers exclusive, non-recursive ownership semantics: A calling thread owns a mut en.cppreference.com mutex는 여러 스레드의 공유 자원을 보호하기 위해 사용되는 클래스입니다. std::mute.. 2020. 12. 16.
[c++] mutex, lock guard, unique lock, shared mutex, recursive mutex medium.com/swlh/c-mutex-write-your-first-concurrent-code-69ac8b332288 [C++] MUTEX: Write Your First Concurrent Code Learn to design concurrent code and to protect shared with a mutex by implementing your first thread-safe queue! medium.com Mutex가 뭘까? Mutex는 여러 스레드에서 동시에 접근할 수 있는 공유 자원의 소유권을 결정하는 모델이다 Mutex를 이용해 다른 스레드에서 이 공유 자원에 접근하지 못하게 막을 수 있다는 의미다 만약 스레드 A에서 lock을 호출하면 unlock이 수행될 때까지 다른 스레드 .. 2020. 12. 16.
[c++] google c++ style guide Google C++ Style Guide 본 장에서는 Google C++ 스타일 가이드에 대해 요약하고 있습니다. Google C++ Style Guide cpplint는 정적 코드 체커 프로그램입니다. cpplint를 이용하면 작성한 소스코드가 Google C++ 스타일 가이드를 잘 따르는지 체크할 수 있습니다. cpplint/cpplint cf. vscode cpplint extension Contents Background C++는 구글 오픈 소스 프로젝트에서 많이 사용되는 주요 프로그래밍 언어들 중 하나입니다. 모든 C++ 프로그래머가 알고 있듯이 C++는 매우 강력한 기능을 제공하고 있습니다. 그러나 강력한 기능을 제공하기 위한 언어의 복잡성 때문에 때로는 버그를 생산하기도 하고, 읽기 어려운 .. 2020. 12. 15.
[c++] template meta programming Template Meta Programming 다음 c++ 프로그램의 동작을 예상해봅시다. #include using namespace std; template struct funStruct { enum { val = 2*funStruct ::val }; }; template struct funcStruct { enum {val = 1}; }; int main() [ cout 2020. 12. 15.
[c++] variadic template (가변 길이 템플릿) Variadic Template Variadic function templates in C++ - GeeksforGeeks 가변 길이 템플릿 (Variadic template)은 여러개의 인자를 가질 수 있습니다. 예를 들어 가변 길이 템플릿을 이용하여 정의한 함수 템플릿은 정해진 숫자가 아닌 가변 길이 인자를 받을 수 있습니다. Syntax for a variadic function template 아래 코드에서 typename 뒤에 선언된 "..."이 템플릿 파라미터 팩 (parameter pack)입니다. 이 템플릿 파라미터 팩을 선언하면 이 템플릿은 0개 이상의 (가변된 길이의) 인자를 받을 수 있다는 뜻입니다. template (typename arg, typename... args) retur.. 2020. 12. 15.
반응형