42seoul/projects

[Philosophers] ์‚ฌ์šฉ ํ•จ์ˆ˜ ์ •๋ฆฌ

moaoh 2021. 9. 3. 23:22

 

memset

#    include <string.h>
void * memset ( void * ptr, int value, size_t num );

๋ฉ”๋ชจ๋ฆฌํ•˜๋‚˜๋ฅผ ์›ํ•˜๋Š” value๋กœ ์ „๋ถ€ ์ดˆ๊ธฐํ™”.

 

printf

#    include <stdio.h>
int printf(const char* format, ...);

์›ํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜.

 

malloc

#    include <stdlib.h>
void * malloc(size_t size);

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น.

 

free

#    include <stdlib.h>
void free(void *ptr);

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œ.

 

write

#    include <unistd.h>
ssize_t write(int fd, const void *buf, size_t nbyte);

fd : ํŒŒ์ผ ์ „์†ก์˜์—ญ.
*buf : ์ „์†กํ•  ๋ฐ์ดํ„ฐ.
nbyte : ์ „์†กํ•  ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ.

 

usleep

# include <unistd.h>
void sleep( unsigned long useconds);

์ฝ”๋“œ์— ์‹คํ–‰์„ ๋Šฆ์ถค.
useconds : ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„ (๋งˆ์ดํฌ๋กœ์ดˆ) 1์ดˆ : (1000 * 1000)

 

gettimeofday

#    include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);

ํ˜„์žฌ ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹œ์Šคํ…œ์˜ ์‹œ๊ฐ„๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค.
tv : ํ˜„์žฌ์˜ ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์˜จ๋‹ค.

struct timeval
{
    long tv_sec;       // ์ดˆ
    long tv_usec;      // ๋งˆ์ดํฌ๋กœ์ดˆ
}

tz : ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€์•Š์Œ. NULL ๋กœ ๋‘๊ณ  ์‚ฌ์šฉ

struct timezone
{
    int tz_minuteswest:  // ๊ทธ๋ฆฌ๋‹ˆ์น˜ ์„œ์ธก๋ถ„์ฐจ  
    int tz_dsttime       // DST ๋ณด์ •ํƒ€์ž…(์ผ๊ด‘ ์ ˆ์•ฝ์‹œ๊ฐ„)
}

 

pthread_create

#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, 
                                         void *(*start_routine)(void *), void *arg);

์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑ.
๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ์‚ฌ์šฉํ–ˆ๋˜ ์ž์›์€ ํ•ด์ œ๋˜์ง€์•Š๋Š”๋‹ค.

thread : ์Šค๋ ˆ๋“œ ์‹๋ณ„๋ฒˆํ˜ธ๋ฅผ ์ €์žฅ.
attr : ์Šค๋ ˆ๋“œ์™€ ๊ด€๋ จ๋œ ํŠน์„ฑ์„ ์ง€์ •. ( NULL๋กœ ํ•œ๊ฒฝ์šฐ ๊ธฐ๋ณธํŠน์„ฑ์œผ๋กœ ์ง€์ • )
start_routine : ๋ถ„๊ธฐ์‹œ์ผœ์„œ ์‹คํ–‰ํ•  ์Šค๋ ˆ๋“œ ํ•จ์ˆ˜.
arg : ์“ฐ๋ ˆ๋“œ ํ•จ์ˆ˜์˜ ์ธ์ž.

return : ( ์„ฑ๊ณต์‹œ 0, ์‹คํŒจ์‹œ error_code )

 

pthread_detach

#include <pthread.h>
int pthread_detach( pthread_t th_id );

์Šค๋ ˆ๋“œ๋ฅผ ๋ถ„๋ฆฌ. ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ๋ชจ๋“  ์ž์›์„ ํ•ด์ œ.
th_id : ๋ถ„๋ฆฌ์‹œํ‚ฌ ์Šค๋ ˆ๋“œ ์‹๋ณ„์ž.

return : ( ์„ฑ๊ณต์‹œ 0, ์‹คํŒจ์‹œ error_code )

 

pthread_join

#include <pthread.h>
int pthread_join(pthread_t thread, void **value_ptr);

return : ( ์„ฑ๊ณต์‹œ 0, ์‹คํŒจ์‹œ error_code )

ํŠน์ • pthread๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๊ฐ€ ํŠน์ • pthread๊ฐ€ ์ข…๋ฃŒ์‹œ ์ž์› ํ•ด์ œ
thread : ์Šค๋ ˆ๋“œ ์‹๋ณ„์ž.
value_ptr : pthread์˜ return๊ฐ’ ( ํฌ์ธํ„ฐ๋กœ ๋ฐ˜ํ™˜ ) ( ์Šค๋ ˆ๋“œ ์‹๋ณ„๋ฒˆํ˜ธ )

 

pthread_mutex_init

#include <pthread.h>
int pthread_mutex_init(pthread_mutex_t *mutex, 
                                                const pthread_mutexattr_t *attr);

๋ฎคํ…์Šค๋ฅผ ์ƒ์„ฑ.
๋ฎคํ…์Šค ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ.
mutex : ์ดˆ๊ธฐํ™” ์‹œํ‚ฌ ๋ฎคํ…์Šค ๊ฐ์ฒด.
attr : ๋ฎคํ…์Šค์˜ ํŠน์ง•. ( NULL๋กœ ํ•œ๊ฒฝ์šฐ ๊ธฐ๋ณธํŠน์ง•์œผ๋กœ ์ง€์ • )

return : ( ์„ฑ๊ณตํ• ๊ฒฝ์šฐ 0์„ ์‹คํŒจํ–ˆ์„๊ฒฝ์šฐ์—๋Š” -1์„ ๋ฐ˜ํ™˜ )

**EINVAL**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด mutex๊ฐ€ NULL์ด๋‹ค.
**EBUSY**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด mutex์€ ์ด๋ฏธ ์ดˆ๊ธฐํ™”๋˜์—ˆ๋‹ค.
**EINVAL**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ์†์„ฑ ๊ฐ์ฒด attr์€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜๋‹ค.

 

pthread_mutex_destroy

#include <pthread.h>
int pthread_mutex_destroy(pthread_mutex_t *mutex);

๋ฎคํ…์Šค๋ฅผ ์†Œ๋ฉธ.
mutex : ์†Œ๋ฉธ์‹œํ‚ฌ ๋ฎคํ…์Šค.

return : ( ์„ฑ๊ณต์‹œ 0, ์‹คํŒจ์‹œ error_code )

**EINVAL**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด mutex์€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค.
**EBUSY**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ž ๊ฒจ์žˆ๋‹ค.

 

pthread_mutex_lock

#include <pthread.h>
int pthread_mutex_lock(pthread_mutex_t *mutex);

๋ฎคํ…์Šค๋ฅผ ์ž ๊ธˆ.
mutex : ์ž ๊ธ€ ๋ฎคํ…์Šค.

return : ( ์„ฑ๊ณต์‹œ 0, ์‹คํŒจ์‹œ error_code )

**EINVAL**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด mutex๊ฐ€ NULL์ด๊ฑฐ๋‚˜ ์œ ํšจํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋‹ค.
**EINVAL**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด mutex์ด PTHREAD_PRIO_PROTECT ์†์„ฑ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , 
    ํ˜ธ์ถœํ•œ ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋ฎคํ…์Šค์˜ ์ƒํ•œ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ํฌ๋‹ค.
**EDEADLK**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด์—์„œ ๋ฐ๋“œ๋ฝ ์กฐ๊ฑด์ด ๋ฐœ์ƒํ•˜์˜€๋‹ค.
**EAGAIN**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด์—์„œ ์žฌ์ž ๊ธˆ ํšŸ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜์˜€๋‹ค.

 

pthread_mutex_unlock

#include <pthread.h>
int pthread_mutex_unlock(pthread_mutex_t *mutex);

์ž ๊ธด ๋ฎคํ…์Šค๋ฅผ ํ•ด์ œ.
mutex : ํ•ด์ œ์‹œํ‚ฌ ๋ฎคํ…์Šค.

return : ( ์„ฑ๊ณต์‹œ 0, ์‹คํŒจ์‹œ error_code )

**EINVAL**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด mutex๊ฐ€ NULL์ด๊ฑฐ๋‚˜ ์œ ํšจํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋‹ค.
**EPERM**
    ์ง€์ •ํ•œ ๋ฎคํ…์Šค ๊ฐ์ฒด๋Š” ํ˜ธ์ถœํ•œ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ž ๊ธฐ์ง€ ์•Š์•˜๋‹ค.