2. pthread 생성
System Program/pthread 2014. 3. 7. 11:521. 새로운 쓰레드 생성 의미
쓰레드의 관점에서만 보면 main() 함수로 시작하는 프로세스는 주 쓰레드이다.
쓰레드를 새로 생성한다는 것은 주 쓰레드 뿐만 아니라 추가적인 쓰레드를 만드는 것이다.
2. pthread_create() 함수
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*entry_point)(void *), void *args);
성공하면 '0'을 리턴, 에러가 발생하면 에러 번호(양수)를 리턴한다.
3. 예제
아래 예제는 모양만 낸 예제이다. 의도하는 바는 TS File로부터 TS Section을 뜯어온다는 개념에서 출발한 것이다.
#include <stdio.h> #include <pthread.h> void *SI_ProcessTSFilter(void *pData) { UINT16 PID = 0x00; FILE *fp = NULL; UINT32 nRead = 0; UINT8 buffer[188] = {0, }; UINT32 filesize = 0; fp = fopen("hurrycain.ts", "rb"); if(!fp) { printf("fopen error \n"); } /* fseek(fp, 0, SEEK_END); filesize = ftell(fp); fseek(fp, 0, SEEK_SET); printf("filezie = %d \n", filesize); */ while(1) { nRead = fread(buffer, 1, 188, fp); if(nRead < 188) break; if(buffer[2] == 0) printf("TS Header = %#x %#x %#x\n", buffer[0], buffer[1], buffer[2]); //sleep(1); } fclose(fp); pthread_exit((void *) 0); //return 0; } int main(int argc, char *argv[]) { pthread_t tid; void *res; int s; s = pthread_create(&tid, NULL, SI_ProcessTSFilter, NULL); if(s != 0) { printf("pthread_create error \n"); } s = pthread_join(tid, &res); if(s != 0) { printf("pthread_join error \n"); } printf("thread joined .....%ld\n", (long)res); return 0; }
'System Program > pthread' 카테고리의 다른 글
4. 쓰레드 조인과 분리 (0) | 2014.03.07 |
---|---|
3. 쓰레드 종료 및 연관 함수 (0) | 2014.03.07 |
6. pthread attribute - (2) (0) | 2013.07.12 |
8. 쓰레드 클린업 핸들러(쓰레드 취소와 연관) (0) | 2013.07.03 |
5. pthread attributes (0) | 2013.07.02 |