'코드자료실/linux / c'에 해당되는 글 3건

반응형

1. 기본 쓰레드 함수

(1) pthreard_create

쓰레드 생성을 위해 사용(pthread_t)

첫번째 인자는 쓰레드 식별자

세번째 인자는 쓰레드 실행시 호출되는 함수

네번째 인자는 그 함수의 인자

리턴값은 쓰레드 ID

실행된 쓰레드에 대해서는 pthread_join 등의 함수를 이용해서 쓰레드 종료 때까지 기다려줘야 한다. pthread_join은 일종의 fork의 wait와 비슷하게 동작하며, 쓰레드 자원을 해제시켜 준다.

ex) thr_id = pthread_create(&p_thread[1], NULL, t_function, (void *)&a);


(2) pthread_join

첫번째 인자는 기다릴(join)할 쓰레드 식별자

두번째 인자는 쓰레드의 return값

두번째 인자가 NULL이 아닐 경우 해당 포인터로 쓰레드 return값을 받아올 수 있다.

ex) pthread_join(p_thread, (void *)&status);


(3) pthread_detach

detach는 "떼어내다"라는 뜻을 가지며, main 쓰레드에서 pthread_create를 이용해 생성된 쓰레드를 분리시킨다.

이 함수는 식별번호(첫번째 인자)인 쓰레드를 detach시키는데, detach 되었을 경우, 해당(detach)된 쓰레드가 종료될 경우 pthread_join을 호출하지 않더라도 즉시 모든 자원이 해제(free) 된다.

detach를 하지 않을 경우, 쓰레드 함수가 종료되더라도 자원이 해제되지 않는다.

pthread_create 호출 후 detach할 수 도 있고, pthread_create 호출시에 쓰레드가 detach 되도록 할 수도 있다.(pthread_attr_setdetachstate 참조)

ex) pthread_detach(p_thread);


(4) pthread_exit

현재 실행 중인 쓰레드를 종료시키고자 할 때 사용한다.

pthread_cleanup_push가 정의되어 있다면, pthread_exit가 호출될 경우 cleanup handler가 호출된다. 보통 이 cleanup handler는 메모리를 정리하는 등의 일을 하게 된다.

ex) pthread_exit(0);


(5) pthread_cleanup_push

cleanup handler를 인스톨하기 위해서 사용된다.

pthread_exit가 호출되어서 쓰레드가 종료될 때 pthread_cleanup_push에 의해서 인스톨된 함수가 호출된다.

첫번째 인자가 쓰레드가 종료될 때 호출되는 함수이다.

두번째 인자는 이 때의 아규먼트이다.

cleanup handler는 주로 자원을 돌려주거나, mutex 잠금등의 해제를 위한 용도로 사용된다. 만약 mutex 영역에서 pthread_exit가 호출되어 버릴 경우, 다른 쓰레드에서 영원히 block 될 수 있기 때문이다.

또, malloc 으로 할당받은 메모리, 열린 파일지정자를 닫기 위해서도 사용한다.

ex) phread_cleanup_push(cleanup, (void *)&a);


(6) pthread_cleanup_pop

pthread_cleanup_push와 함께 사용되며, cleanup handler를 제거하기 위해서 사용된다.

pthread_cleanup_push와 pthread_cleanup_pop은 반드시 같은 함수 내의 같은 레벨의 블럭에서 한 쌍으로 사용해야 한다.


(7) pthread_self

pthread_self를 호출하는 현재 쓰레드의 쓰레드 식별자를 리턴한다.

ex) ptread_t id;        id = pthread_self();


2. 쓰레드 동기화 함수


(1) pthread_mutex_init

(2) pthread_mutex_distroy

(3) pthread_mutex_lock

(4) pthread_mutex_unlock

(5) pthread_cond_init

(6) pthread_cond_signal

(7) pthread_cond_boradcast

(8) pthread_cond_wait

(9) pthread_cond_timewait

(10) pthread_cond_destroy

(11) 예제 코드


3. Thread Attribute 함수


(1) pthread_attr_init

(2) pthread_attr_distroy

(3) pthread_attr_getscope

(4) pthread_attr_setscope


4. 쓰레드 시그널 관련


(1) pthread_sigmask

(2) pthread_kill

(3) sigwait


5. 쓰레드 취소

(1) pthread_cancel

(2) pthread_setcancelstate

(3) pthread_getcancelstate


반응형
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

cs07488@cs1 ~/2013/os $ gcc -lrt prime.c


위와같이 컴파일하여 a.out파일이 나왔다 치자,


cs07488@cs1 ~/2013/os $ time ./a.out


위처럼 time을 앞에써주고 실행을 시키면 


real    0m0.009s

user    0m0.002s

sys     0m0.005s


결과와 함께 위의 세줄이 나오는것을 확인 할 수 있다.

user의 경우 user영역에서 실행된 시간,
sys의 경우 커널에서 실행된 시간,
real은 이를 합산한 총 실행시간이다.

반응형

'코드자료실 > linux / c' 카테고리의 다른 글

[리눅스, c] pthread  (0) 2013.01.07
[리눅스, c] vi 에디터 사용법  (0) 2013.01.07
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

vi 에디터 사용법

 

 명령모드에서 입력모드 상태로 전환하는 명령어

i : 현재 커서의 위치에 글자를 삽입

I : 커서가 있는 줄(line) 의 맨 앞에 글자를 삽입

a : 현재 커서 위치에 다음 칸에 글자를 추가

A : 커서가 있는 줄(line)의 맨 뒤에 글자를 삽입

o : 현재의 줄 다음에 새로운 줄을 삽입

O : 현재의 줄 아에 새로운 줄을 삽입

 

 

* 특수한 입력 명령어

r : 현재 커서 위치의 1개 문자를 교체

R : 현재 커서 위치부터 <ESC>키 입력 할 때까지 글자 교체

cc :  현재 커서 위치의 행을 교체(다 지워짐)

cw :  현재 커서 위치부터 1개 단어를 교체


w :  다음 낱말의 시작부분

e :  다음 낱말의 끝 부분

b :  이전 낱말의 시작 부분

 

(,) : 문장 단위의 이동

{,} : 문단(단락) 단위의 이동

 

<CTL> + B : befor page

<CTL> + F : next page

 

0 : 현재 행의 맨 앞

$ : 현재 행의 가장 마지막 문자

^ : 현재 행의 맨 앞 문자

gg : 첫 행의 맨 앞

G : 문서의 마지막 줄

nG : n번째 줄

 

H : 스크린의 첫 행의 맨 앞

M : 스크린의 가운데 행의 맨 앞

L :  스크린의 가운데  행의 맨 앞

<ENTER> : 다음행의 맨 앞

:n  : n번째 줄
<CTL> + g : 현재 커서 위치 출력

 

 

x, X : 현재 커서 위치(혹은 왼쪽)의 1개 문자 삭제

nx, nX: 현재 커서 위치(혹은 왼쪽)의 n개 문자 삭제

dd :  현재 커서가 위치한 행을 삭제

 

 

u : 이전 명령어 실행 취소

. : 마지막 편집 명령어 반복 실행

 

 

v : vi 에디터 하단에 visual 표시가 나타나고 블럭 지정이 시작됨

d : 블럭으로 지정한 부분을 삭제

y : 블럭으로 지정한 부분을 복사

 

yy, nyy : 커서위치의 행(혹은 n개의 행)을 복사

dd, ndd : 커서위치의 행(혹은 n개의 행)을 삭제하면서 동시에 복사

p : 복사된 내용을 커서의 뒷부분에 붙임

P : 복사된 내용을 커서의 앞부분에 붙임

 

 

 

vi의 문자열 검색


/문자열 : 현재 커서 위치의 아래쪽으로 문자열 검색

?문자열 : 현재 커서 위치의 위쪽으로 문자열 검색

n :  이전 검색한 문자열에 대해서 동일 방향으로 검색

N : 이전에 검색한 문자열에 대해서 반대 방향으로 검색

 


문자열 치환


:s/regexp/rep

 -> 현재 커서가 위한 행에서 첫번째 "regexp" 문자열을 찾아서 "rep"로 치환

 

:s/regexp/rep/g

-> 현재 커서가 위한 행에서 모든 "regexp"문자열을 찾아서 "rep"로 치환

 

:%s/regexp/rep/g

-> 문서내부의 모든 "regexp"문자열을 찾아서 "rep"로 치환

 

:%s/regexp/rep/gc

-> 문서내부의 모든 "regexp"문자열을 찾아서 "rep"로 치환하는 과정마다 사용자의 확인을 입력받음

반응형

'코드자료실 > linux / c' 카테고리의 다른 글

[리눅스, c] pthread  (0) 2013.01.07
[리눅스] time 명령어 - 실행시간 측정  (0) 2013.01.07
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,