본문 바로가기

programmer/Programming

(4)
함수 포인터 사용 예 함수 포인터를 왜 사용하고 언제 유용하게 사용하는지 알아보자. 1. Call Back 함수로 사용 Call back은 '다시 받는다'라는 뜻이다. 우리가 기본적으로 함수를 선언해 사용하게 되면 사용하는 그 시점에 기능이 수행된다. 하지만 function pointer를 활용하면 그림과 같이 DLL에서 자신이 선언한 함수가 DLL 수행 시점에 실행되게 된다. 이를 Async라고 표현하는데 이에 대한 설명은 '여기'에 잘 설명되어 있다. SUDO 코드를 예로 보자. Main Processor에서 생성한 function_pointer(int count)라는 함수를 DLL에 함수 포인터로 넘겨주고 이를 DLL Run_MainProcess에서 실행하게 된다. 이때 실행되는 함수의 원본은 Main Processor..
원형 큐(circuit queue) 예제 통신을 위한 메시지 큐나 순환되는 큐 구조를 만들고 싶을 때 원형 큐를 많이 사용한다. C로 구현한 원형 큐 구현 예제는 인터넷에 많으므로 원형 큐의 데이터를 구조체로 체우는 예제를 공유해 본다. Queue 사이즈를 동적으로 만들기 위해서 MaxSize를 사용했을 뿐 이와 같은 작업이 필요 없다면 MAX_SIZE로 대체 가능하다. 원형 큐에 들어가는 구조체 데이터는 typedef P_convert element이며 P_convert는 구조체이다. P_convert 대신에 자신이 원하는 구조체를 만들어 사용하면 된다. 파일명: packet_queue.h #include "server_type.h" #define TRUE 1 #define FALSE 0 #define ERROR -1 #define MAX_S..
Pthread 개념 및 예제 pthead에 대한 개념 설명 및 예제는 사실 '이곳'에 너무 잘 정리되어 있어서 따로 정리를 하지 않으려다가. 적용하면서 겪었던 애로 사항들을 정리하기로 했다. Pthread 사용 방법 구분 Main thread에서 새로운 Thread를 생성할 때 생성된 Thread의 종료 여부를 관리하는 detach, join 방법이 있다. pthread_detach 메인 thread와 상관 없이 별개의 thread를 생성하고 싶을 때 사용된다. 생성된 thread의 종료 여부는 관심이 없다. 단 주의해야 할 점은 메인 thread에서 생성된 thread라면 maint thread가 종료되는 시점에 생성된 thread도 종료되므로 이를 해결하기 위해서는 pthread_join을 사용해야 한다. 만약 메인 thread..
C 언어 Bit field 배열- 최소 메모리로 flag 저장하기 간단한 Flag 값을 저장하고 싶고 메모리도 줄이고 싶을때 우리는 보통 bit field를 사용한다. 잘만 사용하면 메모리 활용을 극대화 시킬 수 있다. bit field를 사용하는 2가지 방법을 정리해본다. 1. h와 #define 을 사용한 bit field 배열화 2. 기본적인 bit field와 구조체를 사용한 배열화를 진행해 본다. #define Prov_Stopwatch_Max_N 1000 typedef Prov_u8 BIT_FIELD_TYPE ; #define BIT_SIZE(BIT_FIELD_TYPE)(sizeof(BIT_FIELD_TYPE) * 8) #define StwhArrSize(Prov_Stopwatch_Max_N / BIT_SIZE) + 1 #define SetBit(array,..

반응형