Boost thread Library

๋ฐ˜์‘ํ˜•

Boost ๋‘ ๋ฒˆ์งธ, ์˜ค๋Š˜์€ ์“ฐ๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๋จผ์ €, ์“ฐ๋ ˆ๋“œ๋ผ๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„๋ฅผ ์ผ์ปซ๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต์˜ ํ”„๋กœ์„ธ์Šค๋“ค์€ ํ•œ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ฅธ ํฐ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋ผ๊ณ  ์–˜๊ธฐํ•ฉ๋‹ˆ๋‹ค.


Boost์—์„œ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜์˜ ํ—ค๋”ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.


#include <boost/thread.hpp>


or


#include <boost/thread/thread.hpp>


๋จผ์ € ๊ฐ„๋‹จํ•œ ์“ฐ๋ ˆ๋“œ ์ฝ”๋“œ๋กœ ์‹œ์ž‘ํ•ด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.



t ๋ผ๋Š” ์“ฐ๋ ˆ๋“œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ hello ํ•จ์ˆ˜์˜ ๋‚ด์šฉ์„ ์“ฐ๋ ˆ๋“œ๋กœ ํ‘œํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์‹คํ–‰๋˜๋Š” ์“ฐ๋ ˆ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ ์™€์„œ ์ถœ๋ ฅํ•ด ์“ฐ๋ ˆ๋“œ๋ฅผ ์ข…๋ฃŒํ•œ ํ›„์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์™€์„œ ์ถœ๋ ฅํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์ข…๋ฃŒ ํ›„์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ถœ๋ ฅํ•œ ์ด์œ ๋Š” ์ •ํ™•ํžˆ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด์„œ ์ฃผ์†Œ๋ฅผ ์žƒ์—ˆ๋Š”์ง€์˜ ํ™•์ธ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.



์“ฐ๋ ˆ๋“œ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ–ˆ์œผ๋ฉฐ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•ด ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์™€ ํ•จ์ˆ˜์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์“ฐ๋ ˆ๋“œ ์ข…๋ฃŒ ํ›„์—๋Š” ์“ฐ๋ ˆ๋“œ ์ฃผ์†Œ๊ฐ€ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Boost thread library๋ฅผ ์ด์šฉํ•ด์„œ ์Šค๋ ˆ๋“œ๋ฅผ interruptํ•˜๋Š” ๊ฒƒ๋„ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.



์œ„ ์†Œ์Šค๋ฅผ ํ†ตํ•ด์„œ interrupt()์„ ํ†ตํ•ด ์“ฐ๋ ˆ๋“œ๋ฅผ interrupt๋ฅผ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธ์€ thread ํ•จ์ˆ˜์—์„œ try catch ๋ฌธ์„ ์ค€ ๊ฒƒ์ฒ˜๋Ÿผ thread interrupted!๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.





Boost thread library์˜ ๋‹จ์ .


์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ๋Š๋‚€ ๊ฒƒ์ด์ง€๋งŒ Boost thread library์—๋Š” ๋‹จ์ ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ €๋Š” Boost Library 1.53 ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ํŠนํžˆ boost/thread.hpp์˜ ์†Œ์Šค๋ฅผ ํฌํ•จํ•  ๋•Œ, ์ปดํŒŒ์ผ ํ•  ๋•Œ๋„ ๊ทธ๋ ‡์ง€๋งŒ ์ž˜๋ชป๋œ object ํŒŒ์ผ ์ƒ์„ฑ์œผ๋กœ ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ์˜ ๋„์ถœ์€ ์ปค๋…• ์ „ํ˜€ ์—‰๋šฑํ•œ ๊ฑธ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด๋ฒ„๋ฆฌ๋Š” ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฒ„์ „์˜ ๋”ฐ๋ฅธ ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค๋งŒ ์•„์ง Boost Library๋Š” ๊ฐœ๋ฐœ ๋‹จ๊ณ„ ์ค‘์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ thread ์ด์™ธ ์ข€ ๋” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. object ํŒŒ์ผ์˜ ์˜ค์ฐจ๋Š” Eclipse์˜ ๊ฒฝ์šฐ clean์œผ๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์ผ๋ฐ˜ ์ฝ˜์†” ์ปดํŒŒ์ผ์˜ ๊ฒฝ์šฐ, ๊ธฐ์กด์˜ object ํŒŒ์ผ ๋˜๋Š” out ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜์‹œ๊ณ , ๋‹ค์‹œ ์ปดํŒŒ์ผ ํ•˜๋ฉด ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ธฐ๋Š”ํ•ฉ๋‹ˆ๋‹ค๋งŒ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋„ ๊ฐ„ํ˜น ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ํ•„์ž๋Š” ์œ„ ์ฝ”๋“œ ์ค‘์—์„œ๋„ boost/thread.hpp๋ณด๋‹ค๋Š” boost/thread/thread.hpp์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค๋ฅผ ์ง์ ‘ ๋ณด์‹œ๋ฉด ์™œ ๊ทธ๋Ÿฐ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ์กฐ๊ธˆ์€ ์ดํ•ด๊ฐ€ ๋ ๊ฒ๋‹ˆ๋‹ค ^^;


๋˜ ํ•œ๊ฐ€์ง€, g++ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•œ ์ฝ˜์†” ์ปดํŒŒ์ผ์„ ํ•˜์‹œ๋Š” ๊ฒฝ์šฐ, ์ผ๋ฐ˜์ ์ธ ์ปดํŒŒ์ผ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ปดํŒŒ์ผ์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. g++ ๋ช…๋ น์–ด๋กœ ์ปดํŒŒ์ผ ํ•  ๋•Œ๋Š” l ์˜ต์…˜์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ boost_system๊ณผ boost_thread ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. Eclipse ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ, ํ”„๋กœ์ ํŠธ ์˜ต์…˜์—์„œ Library Settings์— ๋ฐ˜๋“œ์‹œ boost_system๊ณผ boost_thread๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ตฌ๋ฌธ์ด ์ •ํ™•ํ•œ ์ฝ”๋“œ์ธ๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.



์ผ๋ฐ˜์ ์œผ๋กœ object ํŒŒ์ผ๋งŒ ์ฃผ๊ณ  ์ปดํŒŒ์ผ ํ•  ๊ฒฝ์šฐ.



l ์˜ต์…˜์„ ์ฃผ๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.



์ดํด๋ฆฝ์Šค์˜ ๊ฒฝ์šฐ, ํ”„๋กœ์ ํŠธ ์ •๋ณด์—์„œ g++ Linker ๋ถ€๋ถ„์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•ด์ฃผ์‹œ๊ณ , OK ๋ˆŒ๋Ÿฌ์ฃผ์‹  ๋‹ค์Œ ๋นŒ๋“œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.



๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments