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

NAME

pthread_setcancelstate, pthread_setcanceltype - ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์ƒํƒœ์™€ ์œ ํ˜• ์„ค์ •ํ•˜๊ธฐ

SYNOPSIS

#include <pthread.h>

int pthread_setcancelstate(int state, int *oldstate);
int pthread_setcanceltype(int type, int *oldtype);

-pthread๋กœ ๋งํฌ.

DESCRIPTION

pthread_setcancelstate()๋Š” ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ์˜ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์ƒํƒœ๋ฅผ state์— ์ค€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ์˜ ์ด์ „ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์ƒํƒœ๋ฅผ oldstate๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฒ„ํผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. state ์ธ์ž๋Š” ๋‹ค์Œ ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค.

PTHREAD_CANCEL_ENABLE
์Šค๋ ˆ๋“œ๊ฐ€ ์ทจ์†Œ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ตœ์ดˆ ์Šค๋ ˆ๋“œ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ƒˆ ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋ณธ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์ƒํƒœ์ด๋‹ค. ์Šค๋ ˆ๋“œ์˜ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์œ ํ˜•์ด ์ตœ์†Œ ๊ฐ€๋Šฅ ์Šค๋ ˆ๋“œ๊ฐ€ ์ทจ์†Œ ์š”์ฒญ์— ์–ธ์ œ ๋ฐ˜์‘ํ•˜๊ฒŒ ๋ ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.
PTHREAD_CANCEL_DISABLE
์Šค๋ ˆ๋“œ๊ฐ€ ์ทจ์†Œ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค. ์ทจ์†Œ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋ฉด ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ์ด ํ™œ์„ฑํ™”๋  ๋•Œ๊นŒ์ง€ ๋ง‰์•„ ๋‘”๋‹ค.

pthread_setcanceltype()์€ ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ์˜ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์œ ํ˜•์„ type์— ์ค€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ์˜ ์ด์ „ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์œ ํ˜•์„ oldtype์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฒ„ํผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. type ์ธ์ž๋Š” ๋‹ค์Œ ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค.

PTHREAD_CANCEL_DEFERRED
์Šค๋ ˆ๋“œ๊ฐ€ ์ทจ์†Œ์ (pthreads(7) ์ฐธ๊ณ )์ธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๊นŒ์ง€ ์ทจ์†Œ ์š”์ฒญ์„ ์—ฐ๊ธฐํ•œ๋‹ค. ์ตœ์ดˆ ์Šค๋ ˆ๋“œ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ƒˆ ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋ณธ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์œ ํ˜•์ด๋‹ค.
PTHREAD_CANCEL_ASYNCHRONOUS
์Šค๋ ˆ๋“œ๊ฐ€ ์–ธ์ œ๋“  ์ทจ์†Œ๋  ์ˆ˜ ์žˆ๋‹ค. (๋ณดํ†ต์€ ์ทจ์†Œ ์š”์ฒญ ์ˆ˜์‹  ์ฆ‰์‹œ ์ทจ์†Œ๋˜์ง€๋งŒ ์‹œ์Šคํ…œ์—์„œ ์ด๋ฅผ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.)

์ด ํ•จ์ˆ˜๋“ค ๊ฐ๊ฐ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์„ค์ •ํ•˜๊ธฐ-์–ป๊ธฐ ๋™์ž‘์€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ์›์ž์ ์ด๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ ์ด ํ•จ์ˆ˜๋“ค์€ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ 0 ์•„๋‹Œ ์˜ค๋ฅ˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ERRORS

pthread_setcancelstate()๊ฐ€ ๋‹ค์Œ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

EINVAL
state์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’.

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

EINVAL
type์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’.

ATTRIBUTES

์ด ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ attributes(7)๋ฅผ ๋ณด๋ผ.

์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ ๊ฐ’
pthread_setcancelstate(),
pthread_setcanceltype()
์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Safe
pthread_setcancelstate(),
pthread_setcanceltype()
๋น„๋™๊ธฐ ์ทจ์†Œ ์•ˆ์ „์„ฑ AC-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

NOTES

์Šค๋ ˆ๋“œ๊ฐ€ ์ทจ์†Œ๋  ๋•Œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ pthread_cancel(3)์„ ๋ณด๋ผ.

์ทจ์†Œ ์š”์ฒญ์œผ๋กœ ์ค‘๋‹จ๋ผ์„  ์•ˆ ๋˜๋Š” ์–ด๋–ค ์ค‘์š”ํ•œ ๋™์ž‘์„ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ์„ ์ž ์‹œ ๊บผ ๋‘๋Š” ๊ฒŒ ์œ ์šฉํ•˜๋‹ค. ๊ธด ๊ธฐ๊ฐ„ ๋™์•ˆ, ๋˜๋Š” ์˜ค๋ž˜ ๋ธ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์—์„œ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ์„ ๋„์ง€ ์•Š๋„๋ก ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์ทจ์†Œ ์š”์ฒญ์— ๋ฌต๋ฌต๋ถ€๋‹ต์ด ๋œ๋‹ค.

๋น„๋™๊ธฐ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ

์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์œ ํ˜•์„ PTHREAD_CANCEL_ASYNCHRONOUS๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒŒ ์œ ์šฉํ•œ ๊ฒฝ์šฐ๋Š” ์ž˜ ์—†๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์–ธ์ œ๋“  ์ทจ์†Œ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์ž์›์„ ์˜ˆ์•ฝ(๊ฐ€๋ น malloc(3)์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)ํ•˜๊ฑฐ๋‚˜ ๋ฎคํ…์Šค๋‚˜ ์„ธ๋งˆํฌ์–ด, ๋ฝ ๋“ฑ์„ ํš๋“ํ•  ์ˆ˜ ์—†๋‹ค. ์ž์› ์˜ˆ์•ฝ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์ทจ์†Œ๋  ๋•Œ ๊ทธ ์ž์›๋“ค์˜ ์ƒํƒœ๊ฐ€ ์–ด๋–ค์ง€๋ฅผ (์ฆ‰ ์ž์› ์˜ˆ์•ฝ ์ „์— ์ทจ์†Œ๊ฐ€ ์ผ์–ด๋‚ฌ๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์˜ˆ์•ฝํ•œ ์ƒํƒœ์—์„œ, ๋˜๋Š” ํ•ด์ œํ•œ ํ›„์— ์ผ์–ด๋‚ฌ๋Š”์ง€๋ฅผ) ์‘์šฉ์—์„œ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ค‘์— ์ทจ์†Œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ๋‚ด๋ถ€ ์ž๋ฃŒ ๊ตฌ์กฐ(๊ฐ€๋ น malloc(3) ๊ณ„์—ด ํ•จ์ˆ˜๋“ค์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์œ ํœด ๋ธ”๋ก ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)๊ฐ€ ๋น„์ผ๊ด€ ์ƒํƒœ๋กœ ๋‚จ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ •๋ฆฌ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋”๋Š” ์“ธ๋ชจ๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค.

์•ˆ์ „ํ•˜๊ฒŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋น„๋™๊ธฐ ์ทจ์†Œ ์•ˆ์ „ ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. POSIX.1-2001๊ณผ POSIX.1-2008์—์„œ๋Š” pthread_cancel(3), pthread_setcancelstate(), pthread_setcanceltype()์ด ๋น„๋™๊ธฐ ์ทจ์†Œ ์•ˆ์ „์ด๊ธฐ๋งŒ์„ ์š”๊ตฌํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ทจ์†Œ๋  ์ˆ˜ ์žˆ๋Š” ์Šค๋ ˆ๋“œ์—์„œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋“ค์„ ์•ˆ์ „ํ•˜๊ฒŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

๋น„๋™๊ธฐ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ์ด ์“ธ๋ชจ ์žˆ๋Š” ๋ช‡ ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋Š” ์ˆœ์ˆ˜ํ•œ ์—ฐ์‚ฐ ์œ„์ฃผ ๋ฃจํ”„ ๋‚ด์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ทจ์†Œํ•  ๋•Œ์ด๋‹ค.

์ด์‹์„ฑ ๊ด€๋ จ ์‚ฌํ•ญ

๋ฆฌ๋ˆ…์Šค ์Šค๋ ˆ๋”ฉ ๊ตฌํ˜„์—์„œ๋Š” pthread_setcancelstate()์˜ oldstate ์ธ์ž๊ฐ€ NULL์ธ ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋ฉฐ, ๊ทธ ๊ฒฝ์šฐ ์ด์ „ ์ทจ์†Œ ๊ฐ€๋Šฅ์„ฑ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ตฌํ˜„์—์„œ๋„ NULL์ธ oldstate ์ธ์ž๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ POSIX.1์—์„œ๋Š” ์ด ์ ์„ ๋ช…์„ธํ•˜๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด์‹ ๊ฐ€๋Šฅํ•œ ์‘์šฉ์—์„œ๋Š” ํ•ญ์ƒ oldstate์— NULL ์•„๋‹Œ ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค. ์ •ํ™•ํžˆ ๊ฐ™์€ ๋‚ด์šฉ์ด pthread_setcanceltype()์˜ oldtype ์ธ์ž์—๋„ ์ ์šฉ๋œ๋‹ค.

EXAMPLE

pthread_cancel(3) ์ฐธ๊ณ .

SEE ALSO

pthread_cancel(3), pthread_cleanup_push(3), pthread_testcancel(3), pthreads(7)


2017-09-15

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