gettimeofday
- 1970년 1월 1일 자정 이후로 누적된 시간을 출력.
프로토 타입
int gettimeofday(struct timeval tv, struct timezone tz);
인자
tv : 현재 시간을 저장
struct timeval
{
time_t tv_sec;
suseconds_t tv_usec;
}
- tzp : timezone 구조체는 잘 안 쓰이고 보통 NULL이 들어감
반환
- 성공 시 0
- 실패 시 -1 리턴
- tv나 tz가 접근 불가 영역을 가리키고 있을 때 실패
pthread_create
프로토 타입
int pthread_create(pthread_t thread, const pthread_attr_t attr, void (start_routine)(void), void arg)
인자
- thread - 쓰레드가 성공적으로 생성되었을 때 생성되는 쓰레드 식별자.
- 이 인자로 넘어온 값을 통해서 pthread_join과 같은 함수를 사용할 수 있다.
- attr - 스레드의 특성을 정의. 기본적으로 NULL을 지정.
- 만약 스레드의 속성을 지정하려고 한다면 pthread_attr_init등의 함수로 초기화해야 한다. 과제에서는 쓸 일 없을 듯.
- start_routine - 분기시키며 실행할 쓰레드 함수.
- 생성된 쓰레드가 실행할 함수. 뒤에 올 arg를 인자로 받는다.
- arg - start_routine에 전달될 매개변수.
- start_routine에서 이 인자를 변환하여 사용.
반환
쓰레드는 만들어지는 즉시 start_routine 함수를 시행하고, main 함수도 그대로 같이 실행한다. 쓰레드를 물줄기라고 생각했을 때, main 쓰레드 물줄기에서 또 하나의 물줄기가 갈라져 나와서 흐르는 것과 같다.
pthread_join
특정 쓰레드가 종료하기를 기다렸다가 해당 쓰레드가 종료된 후 다음 코드를 진행
프로토타입
int pthread_join(pthread_t thread, void **thread_return)
인자
- thread - 기다릴 쓰레드의 식별자
- pthread_create의 인자인 thread 스레드가 join하게 해준다.
- thread_return - 쓰레드의 리턴값. NULL이 아닌 포인터를 넣어줄 경우 쓰레드의 리턴 값을 가져올 수 있다.
- pthread_create에서 start_routine이 반환하는 반환값을 여기에 저장.
반환
pthread_detach
- 쓰레드 분리 함수
- 쓰레드 식별자를 넣어주면 해당 쓰레드를 메인 쓰레드에서 분리 시켜줌;
- 위 함수에 들어간 쓰레드는 종료되는 즉시 모든 자원을 free하는 것이 보증됨.
- detach를 하지 않는다면 쓰레드가 종료되어도 pthread_join을 호출하지 않는 한 자원을 돌려주지 않음
pthread_join은 해당 쓰레드가 끝날 때까지 다른 쓰레드는 멈추지만 pthread_detach은 다른 쓰레드가 실행하는 함수가 실행될 수 있다.
join은 쓰레드가 끝나기 전까지는 메인 함수가 진행하지 않지만, detach는 진행한다!
프로토타입
int pthread_detach(pthread_t thread)
인자
반환
pthread_mutex_init
mutex를 사용하기 앞서 초기화를 위해 실행해야 하는 함수.
프로토타입
int pthread_mutex_init(pthread_mutex_t mutex, const pthread_mutexattr_t attr);
인자
- *mutex - 초기화 할 mutex 객체
- pthread_mutexattr_t * attr - mutex의 특성을 맞추기 위해 설정함.
- 기본적으로 NULL.
- 종류로 fast, recurisev, error checking이 있는데 디폴트 값은 fast.
반환
pthread_mutex_lock & pthread_mutex_unlock
각각 함수에 사용 시 해당 함수에 다른 쓰레드의 접근을 차단 / 차단 해제 해줄 수 있는 함수.
프로토타입
int pthread_mutex_lock(pthread_mutex_t mutex);
int pthread_mutex_unlock(pthread_mutex_t mutex);
인자
- mutex - 잠그거나 해제해 줄 mutex.
반환