본문 바로가기

프로그램언어

Posix Thread Example 1 Posix Thread Example 작성자: mwyun(멍) 쓰레드 생성후 자동 종료하는 간단한 예제입니다. 2 pthread 예제1 2.1 pthread1.c 소스코드 #include #include #include pthread_t threads[5]; int done[5]; void *thread_main(void *); int main(void) { int i; int rc; int status; printf("pid=%d\n", getpid()); for (i = 0; i < 5; i++) { done[i] = 0; pthread_create(&threads[i], NULL, &thread_main, (void *)i); printf("%d, %d\n", i, threads[i]); } f.. 더보기
pthread server 예제 server.c #include #include #include #include #include #include #include #include #include #define BUFSIZE 100 void *clnt_connection( void* args ); void send_message( char* message , int len ); void error_handling( char* message ); int clnt_number = 0; int clnt_socks[10]; pthread_mutex_t mutx; int main( int argc , char** argv ) { int serv_sock; int clnt_sock; struct sockaddr_in serv_addr; struct .. 더보기
컴파일 과정 & gcc 옵션 요약 -o 옵션 : gcc에서 만들 실행 파일명을 정하는 것. 안지정하면 a.out %gcc -o filter filter_driver.c define_stack.c global_var.c -c 옵션 : 컴파일하지만 링크하지는 않는 다는 것을 의미 %gcc -c filter_driver.c -D 옵션 : 소스코드의 #define 문과 같다. 심볼에 대한 값을 지정 % gcc -c -DDOC_FILE=\"info\" -DUSE_POLL filter_driver.c 첫 번째 -D 옵션은 DOC_FILE 을 info 라는 문자열로 대치한다는 것 두 번째 -D 옵션은 USE_POLL 심볼을 정의한다. -I 옵션 : 헤더파일이 위치한 디렉토리 지정 % gcc -c -I../headers filter_driver.c -.. 더보기
Pthread API Reference Pthread API Reference윤 상배 고친 과정 고침 0.9 2004년 6월 30일 12시 pthread 취소관련 api 추가 고침 0.8 2003년 10월 9일 12시 pthread 시그널 관련 api 추가 차례1. 소개2. 기본 쓰레드 함수2.1. pthread_create2.2. pthread_join2.3. pthread_detach2.4. pthread_exit2.5. pthread_cleanup_push2.6. pthread_cleanup_pop2.7. pthread_self3. 쓰레드 동기화 함수3.1. pthread_mutex_init3.2. pthread_mutex_destroy3.3. pthread_mutex_lock3.4. pthread_mutex_unlock3.5. pthr.. 더보기
바이트 오더링 (Byte Ordering) ...? htonl() 와 ntohl() 의 차이..? 우리의 컴퓨터 님은 내부적으로 데이타를 처리하는데 있어서 메모리에 데이타를 어떻게 저장하느냐에 따라 두 가지 형태로 분리 됩니다. Litte Endian 방식과 Big Endian 이 있지요~ 방식은... 우리가 많이 쓰는 인텔 계열의 80X86시스템에서 쓰는 방식인데. 데이타가 하위 바이트 부터 메모리에 적재 됩니다. 예를 들어, 16진수 01020304 가 적재 될때는 04030201의 형태가 되지요~ 이 방식의 순서를 호스트 오더링 ( Host Ordering ) 이라고 합니다. 방식은... 매킨토시 계열의 MC86000 의 계열에서 쓰는 방식이며, 데이타가 상위 바이트 부터 메모리에 적재 됩니다. 그래서 그대로 적재 되겠죠.. 이 방식의 .. 더보기
유용하게 사용하는 매크로 함수 #include // 최대값 구하기 #define MAX(a,b) ( (a) > (b) ) ? (a):(b) // 대문자로 #define UPCASE(c) (( (c)>='a' && (c)='A' && (c) 더보기
[AIX]dynamic library & static library 1. AIX에서의 shared library와 static library compile 방법 가. source file 준비 1) app.c int main() { func(); return 0; } 2) test.c #include void func() { printf("Hello World!!\n"); } 나. static library로 compile cc -c test.c cc -c app.c ar -cr libtest.a test.o cc -o app app.o -L. -ltest 다. dynamic library로 compile xlc -c test.c xlc -G -bM:SRE -o libtest.so test.o ar -cr libtest.a libtest.so xlC -o app app... 더보기
POSIX 와 Thread-safety 재진입 POSIX.1에 기반한 C언 어 함수들은 단일 쓰레드 프로세스 환경을 가정하고 만들어졌다. 재 진입(Reentrancy)는 디자인 이슈가 아니었다. 그러므로 멀티 쓰레드 프로그래밍 환경에서 POSIX 함수가 재진입 가능할지를 보장할 수 없다. 멀티 쓰레드 환경에서는 사용하려는 함수가 재진입가능한지를 검토해야 한다. 예를 들어서 asctime함 수는 프로세스의 메모리영역에 공간을 할당하고, 그에 대한 포인터를 돌려준다. 데이터 영역이 독립적이지 않기 때문에 다른 쓰레드에서 asctime함수를 호출하면, 프로세스 데이터가 변해 버리는 문제가 발생한다. 001 #include 002 #include 003 #include 004 #include 005 #include 006 007 #define MAX.. 더보기
MFC Static으로 소켓사용시.. 설명 http://bit1010.tistory.com/47 아래코드를 초기화용으로 한번 호출하자. MFC라이브러리 버그란다. 2008에서도 해결안됐더라.. 01. void SocketThreadInit() 02. { 03. #ifndef _AFXDLL 04. #define _AFX_SOCK_THREAD_STATE AFX_MODULE_THREAD_STATE 05. #define _afxSockThreadState AfxGetModuleThreadState() 06. 07. _AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState; 08. if (pState->m_pmapSocketHandle == NULL) 09. pState->m_pmapSocketHandle = n.. 더보기
VC의 Profiling(프로파일링) 사용과 수행시간 측정 함수사용법(CRunTimeChk) Profile - 분석표라고 정의하는게 맞는것 같다. Visual C++ Profiling Visual C++에서는 함수별 실행 시간, 수행 횟수 비율 등 다양한 기능을 보여주는 프로파일링 기능을 제공한다. 참고로 자바에서는 JProfiler, UNIX/Linux에서는 gprof라는 프로그램이 있다. 사용방법 1. Project Setting(Alt+F7) 에서 Ling탭의 Enable profiling을 체크한다. 3. Rebuild(재빌드)한다. 4. Build -> Profile을 선택한다. 5. Profile에서 원하는 값을 선택후 OK를 누른다. 6. 프로그램을 실행후 종료하면 Output창에 Profile이 선택되어 결과가 출력된다. ※ Window2000에서 profile 메뉴가 활성화되지 .. 더보기