일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Prefix Sums
- margin
- 소수
- c
- c++
- 수학
- 백준
- 상태
- 강화학습
- SK바이오사이언스
- series
- 통신사할인
- 알고리즘
- Codility
- dataframe
- Photoshop
- Gap
- grid
- CSS
- spring
- stl
- Design Pattern
- skt membership
- Javascript
- align-items
- 확률
- 포토샵
- pandas
- 에라토스테네스의 체
- Flexbox
- Today
- Total
목록CS/C++ (61)
sliver__

C++ 스레드 지원 라이브러리를 사용하여 다중 스레드 애플리케이션을 작성하는 것은 매우 간단합니다. 스레드 클래스는 C++11에서 도입되었습니다. 이 함수는 스레드를 생성하는 데 사용할 수 있습니다. 이 함수와 동등한 기능은 POSIX pthread 라이브러리의 pthread_create입니다. #include using namespace std; thread instance ( thread_procedure ) 인자는 아래와 같습니다 이제 다음 코드에서 스레드 ID를 반환하는 인수는 아래와 같습니다. this_thread::get_id () POSIX thread의 pthread_self() 와 같습니다. thread::join() join() 함수는 호출자 스레드 또는 기본 스레드를 차단하는 데 사용..

thread 를 만드는 함수는 아래와 같다. #include int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg ) argument는 아래와 같다. 아래 함수는 코드에 표시된 것처럼 첫 번째 인수로 전달된 스레드가 종료될 때까지 호출자 스레드를 차단합니다. int pthread_join ( pthread_t *thread, void **retval ) argument는 아래와 같습니다. 아래 함수는 스레드 컨텍스트 내에서 사용해야 합니다. 여기서 retval은 이 함수를 호출한 스레드의 종료 코드를 나타내는 스레드의 종료 코드입니다. int pthread_exit ..
지금까지 예제를 통해 shared_ptr의 긍정적인 측면에 대해 논의했습니다. 그러나 응용 프로그램 디자인에 순환 종속성이 있는 경우 shared_ptr이 메모리 정리에 실패합니다. 응용 프로그램 설계를 리팩터링하여 순환 종속성을 피하거나 weak_ptr을 사용하여 순환 종속성 문제를 해결할 수 있습니다. https://www.youtube.com/watch?v=SVTLTK5gbDc. ( circular dependency 설명 ) A, B, C의 세 가지 클래스가 있다고 가정합니다. 클래스 A와 B에는 C의 인스턴스가 있고 C에는 A와 B의 인스턴스가 있습니다. 여기에 설계 문제가 있습니다. A는 C에 의존하고 C도 A에 의존합니다. 마찬가지로 B는 C에 의존하고 C도 B에 의존합니다. 코드 예제는 아..
shared_ptr 스마트 포인터는 shared_ptr 개체 그룹이 힙 할당 개체의 소유권을 공유할 때 사용됩니다. shared_ptr 포인터는 모든 shared_ptr 인스턴스가 공유 개체 사용으로 완료되면 공유 개체를 해제합니다. shared_ptr 포인터는 참조 계산 메커니즘을 사용하여 공유 객체에 대한 총 참조를 확인합니다. 참조 횟수가 0이 될 때마다 마지막 shared_ptr 인스턴스가 공유 객체를 삭제합니다. 다음과 같은 예를 통해 shared_ptr의 사용을 확인해 보겠습니다. #include #include #include #include using namespace std; class MyClass { private: static int count; string name; public:..
unique_ptr 스마트 포인터는 auto_ptr과 정확히 동일한 방식으로 작동하지만 unique_ptr이 auto_ptr에 의해 도입된 문제를 해결한다는 점만 다릅니다. 따라서 unique_ptr은 C++11부터 auto_ptr을 대체합니다. unique_ptr 스마트 포인터를 사용하면 하나의 스마트 포인터만 힙 할당 개체를 독점적으로 소유할 수 있습니다. 한 unique_ptr 인스턴스에서 다른 인스턴스로의 소유권 이전은 std::move() 함수를 통해서만 수행할 수 있습니다. 따라서 이전 예제를 리팩토링하여 auto_ptr 대신 unique_ptr을 사용하도록 합시다. 코드 샘플은 다음과 같습니다. #include #include #include #include using namespace st..
auto_ptr 스마트 포인터는 raw pointer를 가져와 래핑하고 auto_ptr 개체가 범위를 벗어날 때마다 원시 포인터가 가리키는 메모리가 다시 해제되도록 합니다. 언제든지 auto_ptr 스마트 포인터 하나만 개체를 가리킬 수 있습니다. 따라서 하나의 auto_ptr 포인터가 다른 auto_ptr 포인터에 할당될 때마다 소유권은 할당을 받은 auto_ptr 인스턴스로 이전됩니다. auto_ptr 스마트 포인터가 복사될 때도 마찬가지입니다. #include #include #include #include using namespace std; class MyClass { private: static int count; string name; public: MyClass() { ostringstre..