어디에 쓰이는고 하면, 컨테이너의 객체들을 들 쑤시고 싶을 때, 함수 객체를 사용해야 할 때, 일일이 함수 객체를 만들어 주기 귀찮을 때, 주로 사용 된다. bind 는 std::bindlst 와 std::bind2nd를 보다 일반화 시킨 함수이다.. bind 는 임의의 함수, 함수 포인터, 함수 객체, 멤버 함수를 함수 객체로 만들 수 있으며, 원하는 위치에 원하는 값을 전달 시킬 수 있는 함수 객체를 만들어 준다. (요구 조건 또한 없다. 묶고 싶다면 bind 라고 외워도 될 정도..) 바인드의 가장 기초가 되는 사용법을 알아보면 #include using boost::bind; int f(int a, int b) { return a + b; } int g(int a, int b, int c) { r..
연구실 검색 결과
Boost는 개발을 가속시키는 도구이다. 처음 Boost를 shared_ptr 를 사용하기 위해서 썼었다. 그리고 주변에서 만들어서 써야 한다는 말을 듣고, 직접 smart_ptr을 만들었었다. 하지만, 그 기능에 대한 검증이 힘들고, 버그가 있는지 없는지 알 수 없는 상태를 유지해야만 했다. 그리고 어느날, std::pair 을 사용 하다가, 3개 이상을 묶고 싶을 때, 3개 이상을 한번에 선언 하려고 할 때를 위하여, 템플릿 클래스를 만들어서 썻었으나, 만드는 과정 중 부스트의 tuple 을 본 순간, 나는 다시 boost 를 써야만 한다 라고 생각을 굳힌다. Boost 는 개발을 가속시키는 도구이다. 부스트의 한구절 한구절 코드를 곱씹어 보아야 겠다.
#define _WIN32_WINNT 0x400 #include #include #include VOID CALLBACK APCProc(ULONG_PTR dwParam) { printf("APCProc callback\n"); } unsigned int _stdcall ThreadProc(LPVOID pParam) { printf("wait 2 seconds in child thread\n"); Sleep(2*1000); HANDLE hThread = (HANDLE)pParam; DWORD dwRet = QueueUserAPC(APCProc, hThread, (ULONG_PTR)NULL); CloseHandle(hThread); return 1; } int main(int argc, char* argv[..
우선 객체로 만들 경우의 장점은 1. 쓰레드의 생성과 소멸을 관리 할 수 있다. 2. 1의 장점으로, 쓰레드를 지역 객체로 다룰 수 있다. 3. 쓰레드 객체와 쓰레드에서 사용될 함수만을 따로 관리 하여 코드 정리 및 가독성을 극대화 할 수 있다. 4. 1.2.3의 장점으로 디버깅이 조금이나마 향상 된다. 실제 쓰레드가 종료 되어도, 쓰레드가 사용했던 값들을 보존 및 확인 할 수 있다는 것은 .. 아주 큰 매력이다. 제일 마음에 드는건 4번이다. .... 네트워크에서 디버깅이 어려운데, 쓰레드 때문에 더 어려운 디버깅을 조금이나마 향상 시킬 수 있기 때문이다. .. 현재 객체화된 쓰레드는 성공 하였지만, 객체화된 쓰레드의 인터페이스를 어떻게 구성해야 할지 모르겠다. 우선 사용자의 기준으로 인터페이스를 만드..
이번 항목은 RTTI 란 무엇인지에 대해서 살펴 본다. RTTI는 무엇인가? C++ 프로그래밍에선 Run-Time Type Information, or Run-Time Type Identification 약자로 "런타임 형식 정보" 기능을 뜻한다. RTTI 기능을 사용하기 위해선 컴파일러가 이 기능을 지원해야 하며, 비쥬얼 스트디오에선 프로젝트 속성이 "런타임 형식 정보 사용" 을 체크 해야만 한다. 이것은 클래스 및 함수, 기본자료 등 객체라 불리우는 모든 것에 컴파일러가 "아이디"를 부여하여, 기능이 구현되어졌다. 이 "아이디"는 type_info 객체로 구현 되어 졌으며, typeid 연산자를 통해서만, 생성 가능하다. 어떻게 typeid 를 사용 할수 있는가? 예제 코드 /* http://ikpi..
최근댓글