IT관련 지식들 2016. 6. 16. 15:03

디버깅을 위해서 printf를 사용하고 나면 추후 소프트웨어 출하에서도 디버그 메세지가 나오는 경우가 생긴다.

매크로를 사용하면 문제를 없앨 수 있다.

추가로 가변인자를 잘 활용하여 원하는 출력을 가지는 디버그 로그를 확인할 수 있다.


#if defined(DEBUG)

#define TePrint(fmt,args...) printf( "[%s %d]" fmt, __FILE__,__LINE__, ## args )

#else

#define TePrint

#endif

'IT관련 지식들' 카테고리의 다른 글

싸이로드 세미나(카메라)  (0) 2016.06.30
UML(Unified Modeling Language).  (0) 2016.06.20
usleep함수 사용.  (0) 2016.06.15
pthread_create 함수 사용.  (0) 2016.06.15
VIM 설정 저장  (0) 2016.06.14
posted by 동글동글82
:
IT관련 지식들 2016. 6. 15. 17:36


1. 헤더 추가

#include <unistd.h>


2. 함수 사용

      - 마이크로 sec이기 때문에 1초를 하려면 다음과 같이 한다.

#define ONESEC (1000*1000)


usleep(ONESEC);

'IT관련 지식들' 카테고리의 다른 글

UML(Unified Modeling Language).  (0) 2016.06.20
가변인자를 사용한 매크로 (개인용 printf)  (0) 2016.06.16
pthread_create 함수 사용.  (0) 2016.06.15
VIM 설정 저장  (0) 2016.06.14
버추얼박스 해상도 문제  (0) 2016.06.10
posted by 동글동글82
:
IT관련 지식들 2016. 6. 15. 17:34

*pthread_create 함수 사용

- 목적 : 쓰레드를 추가로 생성해서 각 쓰레드에 업무를 분산하여 동작.


- 방법 

1. 헤더파일 추가

#include <pthread.h>


2. 파일에 함수 추가.


int pthread_create( pthread_t *th_id, const pthread_attr_t *attr, void* 함수명, void *arg );

ex) 

pthread_t thread;

void *thread_Picture(void *arg);


pthread_create(&thread, NULL, &thread_Picture, NULL)


함수 인자값의 의미는 다음과 같다.

pthread_t thread; <- thread 번호를 저장할 변수공간이라고 하는데, 출력하기가 어렵다.

NULL : attributes. 정확히 몰라서 NULL을 입력했다.

void *thread_Picture(void *arg); <- 스레드가 생성되면서 동작할 함수.

NULL : argument. 정확히 몰라서 NULL을 입력했다.


성공적으로 스레드를 생성하면 0을 return한다.


3. 컴파일


이후 빌드를 할 때 -D_REENTRANT -lpthread 옵션을 추가로 써서 컴파일을 진행한다.

ex)

${CC} ${OBJ} -o ${NAME} ${LIBS}

==> ${CC} ${OBJ} -o ${NAME} ${LIBS} -D_REENTRANT -lpthread



참고사항

- ps -ax 명령어를 사용해도 PID는 같은 값이 나온다. 그렇다 하더라도 서로 다른 상황에서 돌아가고 있으므로 헷갈리지 말자.

- pthread 함수를 정리한 사이트 방문하여 좀 더 살펴볼 필요가 있음



posted by 동글동글82
: