본문 바로가기

programing150

Fiber - 스레드는 선점 방식으로 멀티태스킹을 함 >시스템이 작업 시간이 끝났다고 결정을 하면, 작업 스레드에서 CPU를 빼앗아 다른 작업 스레드에게 CPU를 할당함 - 좀 더 긴 시간 동안 CPU를 점유하기 원하는 경우 Fiber를 사용 (비 선점형 스케쥴링) - 함수 LPVOID WINAPI ConvertThreadToFiber ( LPVOID lpParameter ); // 성공 : 파이버 주소 반환 > 메인 스레드를 파이버로 변환하는 함수 LPVOID WINAPI CreateFiber ( DWORD dwStackSize, // 1개의 파이버를 생성할 때 할당할 메모리 크기 PFIBER_START_ROUTINE lpStartAddress, // 파이버에 사용할 콜백 함수 LPVOID lpParameter .. 2015. 6. 9.
형 변환 (type cast) - dynamic_cast > 서로 상속 관계에 있는 객체의 포인터나 레퍼런스끼리 형변환 > 일반적으로 (type*)으로 형 변환하는 방식 - static_cast > 논리적으로 가능한 형 변환 > 상속 관계에 있는 포인터끼리만 변환 - reinterpret_cast > 거의 제약이 없는 형 변환 > 서로 다른 형태의 포인터형끼리 바꿀 수 있고 일반 숫자도 포인터형으로 반환 가능 > 대신 이러한 변환에 대해서 컴파일러가 책임을 지지 않음 - const_cast > const가 있는 것을 const가 없는 것으로 바꿀 때 사용 2015. 6. 9.
함수 객체 - 장점 > 상태를 가질 수 있음 > 함수 객체는 자신만의 타입을 가짐( 객체 타입 ) > 특정 상황에서 함수 객체는 함수보다 빠름 => 임의 함수를 다른 함수에 인자로 전달한 후 사용할 때 일반함수는 인라인화 될 수 없지만 객체는 인라인화 될 수 있다. - 구조 class 함수객체클래스이름{ public: 반환타입 operator()( 인자 ) { } }; 2015. 6. 8.
함수 포인터 - 함수를 가리키는 포인터 - 리턴타입 (* 변수명)(인수 목록) int func(int a); int (*pf)(int); // func()를 가리킬 수 있는 함수 포인터 변수 //변수명의 괄호를 빼버리면 정수형 포인터를 리턴하는 함수가 됨 void func(int a, double b); -> void (*pf)(int, double); char *func(char *a, int b); -> char *(*pf)(char *, int); void func(void); -> void (*pf)(void); // 이렇게 하고 나서 pf = func; // 대입 (*pf)(2); // 호출 (원칙) pf(2); // 간략 호출 (지원안 할 가능성 있음) - 함수 포인터 타입 > 포인터 타입 안맞은채 대입시.. 2015. 6. 8.