전체보기
-
zl/memory_stream 네이밍프로그래밍 2014. 7. 2. 11:32
memory_stream 일반적으로, 메모리 조작을 돕는 클래스는 memory stream란 이름을 많이 사용한다.스트림의 정의는? http://terms.naver.com/entry.nhn?docId=838349&cid=209&categoryId=209 put 처음엔 push로 네이밍을 했었는데, put은 어떤 공간에 어떤걸 딱딱 맞게 넣는 느낌인 반면 push는 어거지로 데이터를 밀어넣는단 느낌이라 put을 선택했다. 근데 구현부를 생각하면 push가 어울리기도 한 듯 -_-; 삽입 데이터의 사이즈 체크를 안 하고, 오버플로우를 유발할 수 있으니까...하지만, 문제가 언제든 있을 수 있는 부분이 멀쩡하게 잘 돌아가는 것처럼 보이게 하는 것보단, 메모리 오버플로우 관련 에러를 미리 알 수 있는 것이 나..
-
C++11 가변 인자 템플릿의 사용 예프로그래밍/c++ 2014. 6. 29. 14:05
기존 C++에서는 여러개의 인자를 받는 템플릿 함수를 만들때123456789101112131415161718192021222324 void create() { instance = new Type{}; } template void create(T0 arg0) { instance = new Type{ arg0 }; } template void create(T0 arg0, T1 arg1) { instance = new Type{ arg0, arg1 }; } template void create(T0 arg0, T1 arg1, T2 arg2) { instance = new Type{ arg0, arg1, arg2 }; } .. 이런식으로 만드는 경우가 있었다.저런 코드를 C++11부터 추가된 기능인 가변 인자 ..
-
-
-
CPU에 따른, 프로그램에서의 효율적 스레드의 수프로그래밍 2014. 5. 23. 05:58
하나의 프로그램에서 멀티 스레드를 사용할 때, [(하드웨어 스레드 컨텍스트 수 * 2) + 1]만큼을 사용하면 효율이 좋다고 한다. C++11에서부터 지원하는 std::thread에 hardware_concurrency()라는 멤버 함수가 있는데 이는 하드웨어의 스레드 컨텍스트 수를 반환한다.(만약, hardware_concurrency()를 사용할 수 없는 경우라면 0 을 반환) CPU 하나에, 코어가 4개 달린 CPU를 사용중이라면 결과는 4가 나온다.(하이퍼 스레딩 같은 기술을 지원한다면 결과가 다를 수 있다.) 출저: http://jacking.tistory.com/1061