C_C++ 프로그래밍
-
pthread_cleanup_pop, pthread_cleanup_pushC_C++ 프로그래밍 2019. 5. 25. 01:42
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) void pthrad_cleanup_push(void (*routine) (void *), void* arg);Thread 종료 시 routine 함수가 실행이 됩니다.arg는 넘겨지는 인자 값. cleanup handler 함수는 보통 자원을 반납하거나 mutex lock 혹은 unlock을 사용하기 위해서호출됩니다. void pthread_cleanup_pop(int execute); cleanup handler 함수를 제거합니다. 매개변수가 0이면 실행하지 않고 삭제하며0이 아니라면 실행한 이후에 삭제됩니다. claenup handler 함수는 자원을 반납하거나,..
-
thread_exit(쓰레드에서 특정 값을 return을 시키자)C_C++ 프로그래밍 2019. 5. 25. 01:33
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) thread_exit(void *value)value값을 return 시켜준다.이 return 값은 join의 두번째 인자에서 받아온다. 소스코드 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include#include#include#include // thread functionvoid *thread_function(void * data){ // Thread가 return할 값 static int retval = 999; int count = *((int *) dat..
-
pthread_detach(쓰레드 자원들을 분리시키자)C_C++ 프로그래밍 2019. 5. 25. 01:23
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) pthread_detach(pthread_t thread);일반적으로는 반납이 되지 않지만,pthread_join을 사용하면 모든 자원이 쓰레드가 종료되면 반납이 됩니다.하지만, detach() 한번 detach() 함수를 사용하면 join() 명령을 사용하지 않아도종료 시에 모두 반납이 됩니다. 소스코드 12345678910111213141516171819202122232425262728293031323334#include#include#include#include void *thread_function(void *data){ char a[1000000]; // 자원..
-
pthread_join(쓰레드의 종료를 대기한다)C_C++ 프로그래밍 2019. 5. 25. 01:12
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) pthread_join(pthread_t thread, void ** return);(thread가 종료하기를 기다리다가 종료하면포인터를 리턴한다.) 첫번째 인자 : thread 객체두번째 인자 : NULL이 아니면 포인터 값을 return 받을 수 있다. 소스코드1234567891011121314151617181920212223242526272829303132333435363738#include#include#include#include // thread_function// 1초를 기다린 이후// 매개변수 * 매개변수를 return 한다.void *thread_fun..
-
pthread_create 예제 (쓰레드 생성)C_C++ 프로그래밍 2019. 5. 25. 01:03
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); 첫번째 파라미터 : 쓰레드 식별자 두번쨰 파라미터 : 쓰레드 특성 (기본은 NULL) 세번째 파라미터 : 분기시켜서 실행하게 될 쓰레드 함수 네번째 파라미터 : 쓰레드 함수가 넘겨받을 매개변수 소스코드 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535..
-
[C] pthread의 기본 구조와 함수들C_C++ 프로그래밍 2019. 5. 24. 22:33
기본적으로 프로그래밍에 있어서, 효율은 매우 중요하다.특히 우리가 컴퓨터를 하거나 스마트폰을 할 때음악을 들으면서, 검색을 할 수 있는 이유는 주어진 자원을 최대한 활용하기 때문인데이것이 가능한 이유는 Thread(쓰레드)가 가능하기 때문이다. 쓰레드는 매우매우 중요한데, 프로그램에 있어서 "쓰레드로 만들어지지 않은 프로그램은 쓰레기" 라는 말이 있을 정도이다. 주로, 우리는 쓰레드를 간단한 예제로 통신으로 구현을 한다.이유로는 코드 분량이 적고 가장 쓰레드의 특성을 잘 표현할 수 있기 때문이다. pthread 함수를 쓰기 위해 필요한 헤더 파일#include linux 상에서 컴파일을 하기 위해서는 반드시 -lpthread를 해주어야 한다. pthread의 함수들 int pthread_create(pt..
-
1:1 TCP 소켓 통신 프로그램C_C++ 프로그래밍/TCP_IP 2019. 5. 21. 23:00
간단하게 1:1 TCP 소켓 통신을 하는 프로그램을 만들었다.사실 echo 프로그램에 조금 더 추가를 하여작성한 코드에 무한 반복문을 돌린 것이지만하면서 더더욱 익숙해질 것 같다. Server Client 12345678910$ ./server 8918 새로운 클라이언트 전속 IP : 127.0.0.1 IP : 127.0.0.1 : hi IP : 127.0.0.1 : man IP : 127.0.0.1 : Welcome cs 12345678910$ ./client hiServer : SUCCESS manServer : SUCCESS WelcomeServer : SUCCESS cs Server.c 12345678910111213141516171819202122232425262728293031323334353..
-
[struct rlimit] setrlimit, getrlimit...C_C++ 프로그래밍/TCP_IP 2019. 5. 20. 22:56
프로그램에 할당된 파일의 수, soft limit의 값그리고 그것을 설정 가능한 최대 값인 hard limit 값 등등..을 설정할 수 있다. 직접 해보던 중 구글링을 해봤더니이해가 잘 되는 답변이 있어서 예제와 출처로 남긴다 결과적으로 말하면 rlim_cur 값을 X로 지정하고무한루프를 돌리면 X초 이후로 CPU Time Out이 발생한다. https://www.go4expert.com/articles/getrlimit-setrlimit-control-resources-t27477/ rlimit의 구조 123456struct rlimit{ rlim_t rlim_cur; /* soft limit */ rlim_t rlim_max; /* Hard limit */ }; Colored by Color Scri..