pthread_spin_init(3) - wariua/manpages-ko GitHub Wiki

NAME

pthread_spin_init, pthread_spin_destroy - ์Šคํ•€๋ฝ ์ดˆ๊ธฐํ™” ๋ฐ ํŒŒ๊ธฐ

SYNOPSIS

#include <pthread.h>

int pthread_spin_init(pthread_spinlock_t *lock, int pshared);
int pthread_spin_destroy(pthread_spinlock_t *lock);

-pthread๋กœ ์ปดํŒŒ์ผ ๋ฐ ๋งํฌ.

glibc ๊ธฐ๋Šฅ ํ™•์ธ ๋งคํฌ๋กœ ์š”๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):

pthread_spin_init(), pthread_spin_destroy():
_POSIX_C_SOURCE >= 200112L

DESCRIPTION

์ผ๋ฐ˜์  ์ฃผ์˜ ์‚ฌํ•ญ: ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์Šคํ•€๋ฝ ๋Œ€์‹  ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์Šคํ•€๋ฝ์€ ์ฃผ๋กœ ์‹ค์‹œ๊ฐ„ ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ์—ฐ๊ด€๋˜์–ด ์“ธ๋ชจ๊ฐ€ ์žˆ๋‹ค. NOTES ์ฐธ๊ณ .

pthread_spin_init() ํ•จ์ˆ˜๋Š” lock์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์Šคํ•€๋ฝ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž์›์„ ํ• ๋‹นํ•˜๊ณ  ๊ทธ ๋ฝ์„ ์ž ๊ธฐ์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค. pshared ์ธ์ž๋Š” ๋‹ค์Œ ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค.

PTHREAD_PROCESS_PRIVATE
pthread_spin_init()์„ ํ˜ธ์ถœํ•˜๋Š” ์Šค๋ ˆ๋“œ์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋งŒ ๊ทธ ์Šคํ•€๋ฝ์„ ์กฐ์ž‘ํ•˜๊ฒŒ ๋˜์–ด ์žˆ๋‹ค. (ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๊ทธ ์Šคํ•€๋ฝ์„ ๊ณต์œ ํ•˜๋ ค๋Š” ์‹œ๋„์˜ ๊ฒฐ๊ณผ๋Š” ๊ทœ์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.)
PTHREAD_PROCESS_SHARED
๋ฝ์„ ๋‹ด์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ๊ถŒ์ด ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ทธ ์Šคํ•€๋ฝ์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. (์ฆ‰ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ฐ์ฒด ๋‚ด์— ๋ฝ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.)

์ด๋ฏธ ์ดˆ๊ธฐํ™” ๋œ ์Šคํ•€๋ฝ์— pthread_spin_init()์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” ๊ทœ์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

pthread_spin_destroy() ํ•จ์ˆ˜๋Š” ์•ž์„œ ์ดˆ๊ธฐํ™” ํ•œ ์Šคํ•€๋ฝ์„ ํŒŒ๊ธฐํ•˜๊ณ  ๊ทธ ๋ฝ์„ ์œ„ํ•ด ํ• ๋‹นํ–ˆ๋˜ ์ž์›์„ ํ•ด์ œํ•œ๋‹ค. ์•ž์„œ ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š์€ ์Šคํ•€๋ฝ์„ ํŒŒ๊ธฐํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฝ์„ ์žก๊ณ  ์žˆ๋Š” ๋™์•ˆ ์Šคํ•€๋ฝ์„ ํŒŒ๊ธฐํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” ๊ทœ์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

์Šคํ•€๋ฝ์„ ํŒŒ๊ธฐํ•˜๊ณ  ๋‚˜์„œ pthread_spin_init()์œผ๋กœ ๋‹ค์‹œ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ ์™ธ์— ๋ฝ์— ์–ด๋–ค ์ž‘์—…์ด๋“  ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” ๊ทœ์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

lock์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด์˜ ์‚ฌ๋ณธ์— pthread_spin_lock(3), pthread_spin_unlock(3), pthread_spin_destroy() ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” ๊ทœ์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ ์ด ํ•จ์ˆ˜๋“ค์€ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์‹คํŒจ ์‹œ ์˜ค๋ฅ˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. pthread_spin_init()์ด ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ๋ฝ์ด ์ดˆ๊ธฐํ™” ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

ERRORS

pthread_spin_init()์ด ๋‹ค์Œ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

EAGAIN
์‹œ์Šคํ…œ์— ์ƒˆ ์Šคํ•€๋ฝ์„ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์ž์›์ด ์—†๋‹ค.
ENOMEM
์Šคํ•€๋ฝ์„ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๋‹ค.

VERSIONS

glibc ๋ฒ„์ „ 2.2์—์„œ ์ด ํ•จ์ˆ˜๋“ค์ด ์ฒ˜์Œ ๋“ฑ์žฅํ–ˆ๋‹ค.

CONFORMING TO

POSIX.1-2001.

ํ”„๋กœ์„ธ์Šค ๊ณต์œ  ์Šคํ•€๋ฝ ์ง€์›์€ POSIX ์˜ต์…˜์ด๋‹ค. glibc ๊ตฌํ˜„์—์„œ ๊ทธ ์˜ต์…˜์„ ์ง€์›ํ•œ๋‹ค.

NOTES

์Šคํ•€๋ฝ์€ ์‹ค์‹œ๊ฐ„ ์Šค์ผ€์ค„๋ง ์ •์ฑ…(SCHED_FIFO, ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ SCHED_RR)๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์Šคํ•€๋ฝ์„ SCHED_OTHER ๊ฐ™์€ ๋น„๊ฒฐ์ •์  ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ํ•จ๊ป˜ ์“ฐ๋Š” ๊ฒƒ์€ ์•„๋งˆ๋„ ์„ค๊ณ„ ์‹ค์ˆ˜์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ ์ •์ฑ… ํ•˜์—์„œ ๋™์ž‘ํ•˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์Šคํ•€๋ฝ์„ ์žก๊ณ  ์žˆ๋Š” ๋™์•ˆ ์Šค์ผ€์ค„์—์„œ ์ œ์™ธ๋˜๋ฉด ๋‹ค์‹œ ์Šค์ผ€์ค„ ๋˜์–ด ๋ฝ์„ ๋†“์„ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค์ด ๋ฝ์— ๋งด๋Œ๋ฉด์„œ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค.

์Šคํ•€๋ฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์Šค๋ ˆ๋“œ๋“ค์ด ๊ต์ฐฉ ์ƒํ™ฉ์„ ๋งŒ๋“ค๋ฉด ๊ทธ ์Šค๋ ˆ๋“œ๋“ค์ด ์˜์›ํžˆ ๋งด๋Œ๋ฉฐ CPU ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•˜๊ฒŒ ๋œ๋‹ค.

์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์Šคํ•€๋ฝ์€ ๋ฒ”์šฉ ๋ฝํ‚น ํ•ด๋ฒ•์œผ๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค. ๊ทธ ์ •์˜์ƒ ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „๊ณผ ์ œํ•œ ์—†๋Š” ๋งด๋Œ๊ธฐ ์‹œ๊ฐ„์„ ์œ ๋ฐœํ•˜๊ธฐ ์‰ฝ๋‹ค. ์Šคํ•€๋ฝ์„ ์“ฐ๋ ค๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ฝ”๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ, ์Šค๋ ˆ๋“œ ๋ฐฐ์น˜, ์šฐ์„ ์ˆœ์œ„ ๋ถ€์—ฌ ์ธก๋ฉด์—์„œ๋„ ํŠน๋ณ„ํžˆ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•œ๋‹ค.

SEE ALSO

pthread_mutex_init(3), pthread_mutex_lock(3), pthread_spin_lock(3), pthread_spin_unlock(3), pthreads(7)


2017-09-30

โš ๏ธ **GitHub.com Fallback** โš ๏ธ