Home
Nor-s
Cancel

[C++] emc++ 07: Tweaks

값전달 기법, 생성 삽입 기능을 고려하여라 항목41: 이동이 저렴하고 항상 복사되는 복사 가능 매개변수에 대해서는 값전달을 고려하라 함수 매개변수를 저장하는 경우가 있음 아래 코드의 addName은 자신의 매개변수를 vector에 저장함 class Widget { public: void add...

[C++] emc++ 06: Thread

항목35: 스레드 기반 프로그래밍보다 과제 기반 프로그래밍을 선호하라 항목36: 비동기성이 필수일 때에는 std::launch::async를 지정하라 항목37: std::thread들을 모든 경로에서 합류 불가능하게 만들어라 항목38: 스레드 핸들 소멸자들의 다양한 행동 방식을 주의하라 항목39: 단발성 사건 통신에는 void future 객체...

[C++] emc++ 04: Lambda

Lambda std::find_if(container.begin(), container.end(), [](int val){ return 0 < val && val < 10; }); 람다는 함수 객체를 만드는데 유용한 방법 람다 표현식은 단순한 표현식 소스 코드의 ...

[C++] emc++ 04: Move, Perfect forwarding

std::move가 모든 것을 이동하지는 않음 완벽전달은 완벽하지 않음 이동연산이 복사 연산보다 항상 싼 것은 아님 기대한 만큼 싸지 않음 이동이 유효한 문맥에서 항상 이동 연산이 호출되는 것은 아님 형식&& 형태의 구성체가 항상 오른값 참조를 나타내는 건 아님 매개변수는 항상 왼값이다. ...

[C++] emc++ 03: Smart Pointer

Smart Pointer raw pointer의 단점 객체와 배열 둘다 가리킬 수 있음 사용자가 delete해야 할 책임이 있는지 확인 어려움 어떻게 해제 해야하는지에 대한 정보를 얻기 어려움 (delete or 다른 매커니즘) delete ? delete [] ? 파괴가...

[ostep] 제한적 직접 실행 원리

제한적 직접 실행 원리 CPU 시간을 나누어 씀 => 가상화 구현 가상화 기법을 구현하기 ㅇ 가상화 기법을 구현하기 위한 몇가지 문제를 해결해야함: 성능저하 과중한 오버헤드 제어 문제 CPU에...

[C++] emc++ 02: Modern C++

항목7: 객체 생성시 괄호(())와 중괄호({})를 구분하라 C++11 초기값 지정 괄호로 지정 등호로 지정 중괄호로 지정 대입이 항상 일어나지는 않음 Widget w1 : 기본 생성자 Widget w2 = w1 : 대입 x, 복사...

[ostep] 프로세스 API

유닉스 프로세스 생성 fork(), exec() 시스템 콜 wait(): fork() 시스템 콜 생성된 프로세스가 호출한 프로세스의 복사본 완전 동일하지는 않음 각자 다른 주소공간, 레지스터, PC값 fork() 시스템 콜의 반환 값이 서로 다...

[C++] 참고할만한 링크 목록

Why does C++ allow unnamed function parameters? TMP에서 특정한 함수로 유도하기 위해.. 사용하지 않는 파라미터에 이름을 붙이지 않음 템플릿 특수화/ 부분특수화 Pointer To Class Data Member 클래스명::*{name} 클래스변수.*name...

[C++] emc++ 01: Type Deduction(auto 등)

EMC++ 소개 부분 lvalue, rvalue 주소를 취할 수 있으면 lvalue, 아니면 rvalue 매개변수 자체는 lvalue (Widget&& rhs 에서, 타입은 rvalue 참조, rhs 자체는 lvalue) 잘 설계된 함수 예외에...