목록포직스 (POSIX) (12)
Automotive Software

속성 객체 쓰레드 속성 예전 포스트에 이어 뮤텍스와 조건변수 속성을 알아보자. 뮤텍스 속성 포직스에서는 기본적으로 아래의 멤버를 속성으로 정의하고 있지만, 의무적으로 구현해야 하는 속성이 아니므로 사용하는 운영체제에 따라 속성 지원 여부가 상이할 수 있다. pshared(process-shared) : 뮤텍스의 접근 영역 지정 PTHREAD_PROCESS_SHARED : 뮤텍스가 할당된 메모리 공간에 접근할 수 있는 모든 스레드(다른 프로세스에서 생성된)들의 뮤텍스 사용을 허가함 PTHREAD_PROCESS_PRIVATE : 뮤텍스를 초기화한 동일 프로세스 내에서 생성된 스레드들에게만 뮤텍스 사용을 허가함 protocol : 스케줄링 프로토콜 지정 PTHREAD_PRIO_INHERIT : 하나의 쓰레드가..
#include #include #include /* user defined macro */ #define COUNT_INIT_VALUE 0x00 #define COUNT_DUMMY_VALUE 0xA0 pthread_once_t InitOnce = PTHREAD_ONCE_INIT; /* it needs to be initialized as PTHREAD_ONCE_INIT */ int ClientCount = COUNT_DUMMY_VALUE; void init_ClientCount( void ) { printf("ClientCount(), Before : ClientCount = %d\n", ((COUNT_DUMMY_VALUE == ClientCount)? COUNT_DUMMY_VALUE : ClientC..

포직스 쓰레드 속성 객체 (Attributes Objects) 1 - pthread_attr_t 쓰레드 프로그래밍에서 쓰레드, 뮤텍스 또는 조건 변수를 사용할 때, 쉽게는 아래와 같이 속성 값을 나타내는 두 번째 인자에 NULL값을 전달하여 시스템상에 정의된 기본값으로 각 객체들을 초기화하여 사용할 수 있다. [기본 사용 예제] pthread_create(&threadId, NULL, client_Thread, NULL); 출처: https://autosw.tistory.com/8?category=932055 [Automotive Software] 필요에 따라 객체를 세부적으로 사용하기 위해서는 객체별 속성값을 설정할 수 있으며, 해당 속성 값을 읽어 올 수도 있다. 포직스에서 이러한 설정 및 읽기 동작..
#include #include #include /* user defined macro */ #define COUNT_INIT_VALUE 0x00 #define COUNT_DUMMY_VALUE 0xA0 pthread_once_t InitOnce = PTHREAD_ONCE_INIT; /* it needs to be initialized as PTHREAD_ONCE_INIT */ int ClientCount = COUNT_DUMMY_VALUE; void init_ClientCount( void ) { printf("ClientCount(), Before : ClientCount = %d\n", ((COUNT_DUMMY_VALUE == ClientCount)? COUNT_DUMMY_VALUE : ClientC..

접속 클라이언트 수가 다중 쓰레드에 의해 공유되고, 서버의 첫 구동 시 한 번만 초기화되어 현재까지 접속한 클라이언트의 수를 나타내고 싶을 때, 당연히 생성 쓰레드마다 클라이언트 수를 증가시키겠지만, 증가 전 이 접속 클라이언트 수의 초기화 여부를 어떻게 확인할 것인가? 다중 쓰레드 환경에서 간단한? 방법은... 하나의 초기화 상태 변수를 선언하고 이 변수를 보호할 뮤텍스를 하나 정적으로 선언한 후 그 뮤텍스 보호하에 그 상태 변수의 값을 확인한 후 초기화 여부를 결정 하는 방법일 것이다. 하지만, 뮤텍스를 사용하기 위해 이 뮤텍스 넘을 초기화하기 위한 pthread_mutex_init()을 호출해야 하는데, 이 함수 역시 한 번만 호출되어야 하므로, 다시금 상기 절차를 재귀적(recursively)으로..

나의 포직스(POSIX) 이야기 사실 제목을 "나의 리눅스 또는 유닉스 이야기"로 해야 될지 망설여진다. 나에게 포직스라는 개념조차 없던 시절, 임베디드 리눅스를 통해 처음 포직스라는 단어를 알게 되었지만, 이내 머릿속에서 잊히고 이러한 계열의 운영체제는 단지 유닉스(UNIX)라는 이름으로 인식한 채 대부분의 시간을 지내왔기 때문이다. 물론 리눅스가 포직스 운영체제는 아니지만 그래도 포직스에서 정의하는 기능을 제공하는 포직스 같은 (POSIX Like) 운영체제이고 실제 QNX와 같은 다른 상용 포직스 호환 운영체제와 실제 개발 면에서 크게 다른 점이 없다. (물론, 세부적인 지원 기능 또는 타입 구조체 정의 등은 차이가 있지만) 처음 임베디드 리눅스를 접할 때만 해도 난 임베디드 리눅스 개발자로 먹고살..