728x90
(c++17) decltype, ๋กœ ์ŠคํŠธ๋ง ๋ฆฌํ„ฐ๋Ÿด, static, const, extern, mutable, constexpr, ํƒ€์ž… ์•จ๋ฆฌ์–ด์Šค, ์Šค์ฝ”ํ”„, ๋ ˆํผ๋Ÿฐ์Šค, ์–ดํŠธ๋ฆฌํŠœํŠธ
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 8. 11. 15:11(c++17) decltype, ๋กœ ์ŠคํŠธ๋ง ๋ฆฌํ„ฐ๋Ÿด, static, const, extern, mutable, constexpr, ํƒ€์ž… ์•จ๋ฆฌ์–ด์Šค, ์Šค์ฝ”ํ”„, ๋ ˆํผ๋Ÿฐ์Šค, ์–ดํŠธ๋ฆฌํŠœํŠธ

1. decltype ํ‚ค์›Œ๋“œ decltype ํ‚ค์›Œ๋“œ๋Š” ์ธ์ˆ˜๋กœ ์ง€์ •ํ•œ ํ‘œํ˜„์‹์˜ ํƒ€์ž…์„ ์•Œ์•„๋‚ธ๋‹ค. int x = 123; decltype(x) y = 456; ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” y์˜ ํƒ€์ž…์ด x์˜ ํƒ€์ž…์ธ int๋ผ๊ณ  ์ถ”๋ก ํ•œ๋‹ค. decltype์€ ๋ ˆํผ๋Ÿฐ์Šค๋‚˜ const์ง€์ •์ž๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์—์„œ auto์™€ ๋‹ค๋ฅด๋‹ค. ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ƒ๋‹นํžˆ ๊ฐ•๋ ฅํ•œ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค. 2. ๋กœ ์ŠคํŠธ๋ง ๋ฆฌํ„ฐ๋Ÿด(raw string liternal) ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์ณ ์ž‘์„ฑํ•œ ์ŠคํŠธ๋ง ๋ฆฌํ„ฐ๋„๋กœ์„œ, ๊ทธ ์•ˆ์— ๋‹ด๊ธด ์ธ์šฉ๋ถ€ํ˜ธ๋ฅผ ์ด์Šค์ผ€์ดํ”„ ์Šคํ€€์Šค๋กœ ํ‘œํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๊ณ , \t, \n๊ฐ™์€ ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค๋ฅผ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ๋ฌธ๋ฒ•: R " ( ) " const char* str = R"(Hello "Pinko")" ; 3. stati..

(c++17) ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž, if-switch ์ด๋‹ˆ์…œ๋ผ์ด์ €, __func__, ๊ตฌ์กฐ์  ๋ฐ”์ธ๋“œ
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 8. 4. 17:54(c++17) ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž, if-switch ์ด๋‹ˆ์…œ๋ผ์ด์ €, __func__, ๊ตฌ์กฐ์  ๋ฐ”์ธ๋“œ

1. ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž C++๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋นŒ๋“œ(build)์ž‘์—…์€ ์„ธ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๋ฉฐ, ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž(directive)๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ์— ์ „๋‹ฌํ•  ์‚ฌํ•ญ์„ ํ‘œํ˜„ํ•˜๋ฉฐ, '#' ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ๋นŒ๋“œ ์ž‘์—…: ์ „์ฒ˜๋ฆฌ(Preprocess) -> ์ปดํŒŒ์ผ(complie) -> ๋งํฌ(link) 2. main ( ) ํ•จ์ˆ˜ main ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•Š๊ฑฐ๋‚˜, ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋„๋ก ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. int main (int argc, char* argv[]) - argc: ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•  ์ธ์ˆ˜ ๊ฐœ์ˆ˜ - argv[]: ์ „๋‹ฌํ•  ์ธ์ˆ˜์˜ ๊ฐ’์„ ๋‹ด๋Š” ๋ฐฐ์—ด - argv[0]์—๋Š” ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„์ด ๋‹ด๊น€. * ์ฃผ์˜: ์‹ค์ œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. 3. (C++17) std::byte c++17 ์ด์ „์—๋Š” ..

[C++] ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++ , Chapter 27 ์ •๋ฆฌ )
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 5. 16. 23:03[C++] ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++ , Chapter 27 ์ •๋ฆฌ )

์•ˆ๋…•ํ•˜์„ธ์š”. ํ•‘ํฌ์ฝ”๋ƒฅ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •๋ฆฌ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๊ธด๊ธ€ ์ฃผ์˜ ํ•ด์ฃผ์„ธ์š”. ใ…Žใ…Ž;; ์ œ๊ฐ€ ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…์ด ๋ถ€์กฑํ•ด์„œ ์—…๋ฌด ์ค‘ ๋Œ€ํ™”์—์„œ ์ดํ•ด ๋ชปํ•œ ์ ์ด ๋ช‡ ๋ฒˆ ์žˆ์–ด์„œ ํ•œ ๋ฒˆ ์ซ™ ์ •๋ฆฌ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. * ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ํ”„๋กœ์„ธ์„œ ์œ ๋‹›์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žฅ์ฐฉ๋œ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์— ์ค‘์š”ํ•œ ๊ธฐ๋ฒ•. - ์‹œ์Šคํ…œ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์„œ ์œ ๋‹›์„ ๋ณ‘๋ ฌ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ. * ์‹œ์Šคํ…œ์— ํ”„๋กœ์„ธ์„œ ์œ ๋‹›์ด ์žฅ์ฐฉ๋˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์–‘ํ•จ. 1. ๋…๋ฆฝ์ ์ธ cpu center processor unit๋ฅผ ๋‹ด์€ ํ”„๋กœ์„ธ์„œ ์นฉ์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋‹ฌ๋ฆฌ๋Š” ๋ฐฉ์‹. 2. ํ•œ ํ”„๋กœ์„ธ์„œ ์นฉ ์•ˆ์— ์ฝ”์–ดcore๋ผ ๋ถ€๋ฅด๋Š” ๋…๋ฆฝ์ ์ธ cpu๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ๋ฐฉ์‹. 3. ์œ„ ๋‘๊ฐœ๋ฅผ ํ˜ผํ•ฉํ•˜๋Š” ๋ฐฉ์‹ - ์œ„ ์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋‹ฌ๋ฆฐ ํ”„๋กœ์„ธ์„œ๋ฅผ - ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ multi..

[c++]'์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++17'์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌ(ing...)
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 5. 16. 17:37[c++]'์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++17'์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌ(ing...)

1. ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. template class Pinko { ... } - optional ์— ์ •์˜๋ผ ์žˆ์œผ๋ฉฐ, ์–ด๋–ค ํƒ€์ž…์˜ ๊ฐ’์ด ์žˆ๊ฑฐ๋‚˜ ์—†์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•œ๋‹ค. 2. ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ…œํ”Œ๋ฆฟ์„ ๋ฐ›์œผ๋ ค๋ฉด ํ…œํ”Œ๋ฆฟ ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜(template template parameter)๋ผ๋Š” ํŠน์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. - ํ…œํ”Œ๋ฆฟ ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์€ ์ผ๋ฐ˜ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•˜๋‹ค. - ์ •์˜ํ•œ ์ปจํ…Œ์ด๋„ˆ(ํ…œํ”Œ๋ฆฟ ์„ ์–ธ๋ถ€: templateclass vector)๋ฅผ ํด๋ž˜์Šค ์ด๋ฆ„(vector)์„ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„ (Contatiner)์œผ๋กœ ๋ฐ”๊พผ๋‹ค. template class vector{}; tmeplate class ..

[C++] ์ œ๋„ค๋ฆญ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ชจ์Œ
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 5. 16. 17:36[C++] ์ œ๋„ค๋ฆญ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ชจ์Œ

์ œ๋„ค๋ฆญ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•จ์ˆ˜ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ตฌํ˜„๋ผ ์žˆ์–ด์„œ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์ปจํ…Œ์ด๋„ค์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ œ๋„ค๋ฆญ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณง๋ฐ”๋กœ ์ปจํ…Œ์ด๋„ˆ์— ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋ฐ˜๋ณต์ž(์ดํ„ฐ๋ ˆ์ดํ„ฐiterator)๋ผ ๋ถ€๋ฅด๋Š” ์ค‘๊ฐ„ ๋งค์ฒด๋ฅผ ๊ฑฐ์นœ๋‹ค. โ€ป ์ดํ„ฐ๋ ˆ์ดํ„ฐ begin( ), end( ) ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์˜ ๋ฐ”๋กœ ๋‹ค์Œ ์›์†Œ๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ(์ •๋ฐฉํ–ฅ์œผ๋กœ) ํƒ์ƒ‰ํ•˜๋Š” non-const ๋ฐ˜๋ณต์ž๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. cbegin( ), cend( ) ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์˜ ๋ฐ”๋กœ ๋‹ค์Œ ์›์†Œ๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ(์ •๋ฐฉํ–ฅ์œผ๋กœ) ํƒ์ƒ‰ํ•˜๋Š” const ๋ฐ˜๋ณต์ž๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. rbegin( ), rend( ) ๋งˆ์ง€๋ง‰ ์›์†Œ๋ถ€ํ„ฐ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์˜ ๋ฐ”๋กœ ๋‹ค์Œ ์›์†Œ๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ(์—ญ๋ฐฉํ–ฅ์œผ๋กœ) ํƒ์ƒ‰ํ•˜๋Š” n..

[C++] std::string_view ํด๋ž˜์Šค
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 2. 9. 14:53[C++] std::string_view ํด๋ž˜์Šค

C++17์ด์ „์—๋Š” ์ฝ๊ธฐ ์ „์šฉ ์ŠคํŠธ๋ง์„ ๋ฐ›๋Š” ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. const char*๋กœ ์ง€์ •ํ•˜๋ฉด std::string์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ c_str( )๋‚˜ data( )๋ฅผ ์ด์šฉํ•˜์—ฌ string์„ const char*๋กœ ๋ณ€ํ™˜ํ•ด์„œ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด std::string์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์†์„ฑ๊ณผ ์—ฌ๊ธฐ์„œ ์ œ๊ณตํ•˜๋Š” ํ—ฌํผ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” C++17๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ std::string_view๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. std::string_view - ํ—ค๋”: - ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ: std::base_string_view - ์ถ”๊ฐ€ ๋ฉ”์„œ๋“œ: remove_prefix(size_t), remove_suffix(size_t) → ์ง€์ •ํ•œ ์˜คํ”„์…‹๋งŒํผ ์ŠคํŠธ๋ง์˜..

[C++] ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ํ”„๋กœํ† ํƒ€์ž… & ํ•œ๊ณ„
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 2. 8. 00:59[C++] ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ํ”„๋กœํ† ํƒ€์ž… & ํ•œ๊ณ„

์ข…๋ฅ˜ ์—ฐ์‚ฐ์ž ํ”„๋กœํ† ํƒ€์ž… ์ดํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž operator+ operator- operator* operator/ operator% T operatorโ–  ( const T&, const T& ) ; ๋‹จํ•ญ ์‚ฐ์ˆ  ๋ฐ ๋น„ํŠธ ์—ฐ์‚ฐ์ž operator+ operator- operator~ T operatorโ–  ( ) const ; ์„ ํ–‰, ํ›„ํ–‰ (์ฆ๊ฐ€,๊ฐ์†Œ) operator++ operator-- T& operatorโ–  ( ); T& operatorโ–  ( int ); ๋Œ€์ž… ์—ฐ์‚ฐ์ž operator = T& operatorโ–  ( const T& ); ์ถ•์•ฝ ์‚ฐ์ˆ  ๋Œ€์ž… ์—ฐ์‚ฐ์ž operator+= operator-= operator*= operator/= operator%= T& operatorโ–  ( const T& ); T&..

(์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++/ ๊ฐœ์ • 4ํŒ) - I/O ์ž…์ถœ๋ ฅ ์™„์ „ ๋ถ„์„
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 1. 31. 01:13(์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++/ ๊ฐœ์ • 4ํŒ) - I/O ์ž…์ถœ๋ ฅ ์™„์ „ ๋ถ„์„

C++์—์„œ๋Š” ํ”ํžˆ ์ŠคํŠธ๋ฆผ์˜ ์ถœ๋ฐœ์ง€์™€ ๋ชฉ์ ์ง€๋กœ ์ฝ˜์†”, ํŒŒ์ผ, ์ŠคํŠธ๋ง์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ป ํŒŒ์ผ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” EOF(end of file)์€ ์œ ๋‹‰์Šค์™€ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” Ctrl+D๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์œˆ๋„์šฐ์—์„œ๋Š” Ctrl+Z๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 1. ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋Œ€ํ‘œ์ ์ธ cout์€ ๋นผ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. cin ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ. '์ž…๋ ฅ ์ฝ˜์†”'์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค. cout ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ. ๋ฐ์ดํ„ฐ๋ฅผ '์ถœ๋ ฅ ์ฝ˜์†”'์— ์“ด๋‹ค. cerr ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ. ๋ฐ์ดํŠธ๋ฅผ '์—๋Ÿฌ ์ฝ˜์†”'์— ์Šจ๋‹ค. clog ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” cerr โ€ป ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์˜ ์ฐจ์ด์™€ ์žฅ์ ์€? ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ์€ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋ธ”๋ก ๋‹จ์œ„๋กœ ๋ชฉ์ ์ง€๋กœ ๋ณด๋‚ด๊ณ , ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ..

[C++] ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2021. 3. 14. 03:14[C++] ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ใ€Š์ถœ์ฒ˜. ์‹œ์ž‘ํ•˜์ž! C++17 ํ”„๋กœ๊ทธ๋ž˜๋ฐ (๋ฐ•ํ—Œ์žฌ ์ง€์Œ)ใ€‹ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์•Œ์•„๋ณด์ž! Asynchronous(๋น„๋™๊ธฐ) Synchronous(๋™๊ธฐ) ๋ฐœ์Œ๋„ ์–ด๋ ค์›Œ ๋ณด์ด๋Š” ๋™๊ธฐ, ๋น„๋™๊ธฐ ์ผ๋‹จ ๋ง์€ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‹ˆ.. ๋ฒˆ์—ญ๊ธฐ์— ๋Œ๋ ค ์ฝ์–ด์ฃผ๋Š”๋ฐ๋กœ ํ•œ ๋ฒˆ ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Synchronous-> siNGkrษ™nษ™s(์”จ-์ธ!ํฌ๋กœ๋„ˆ์Šค) Asynchronous->ฤหˆsiNGkrษ™nษ™s(์—์ด ์”จ-์ธ!ํฌ๋กœ๋„ˆ์Šค) ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐœ์Œํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•Œ์•„ ๋‘ก์‹œ๋‹ค.. ๋ฉด์ ‘์—์„œ ๋ฌผ์–ด๋ณด๋ฉด ์•Œ์•„๋“ฃ๊ธด ํ•ด์•ผํ•˜๋‹ˆ๊น (T_T)/ ์ด์ œ ์ด ๋‘˜์˜ ์ฐจ์ด์ ๊ณผ ์ง€๋‹Œ ๋œป์„ ์•Œ์•„๋ณด์ž! ๋”๋ณด๊ธฐ ๋”๋ณด๊ธฐ ๋”๋ณด๊ธฐ โ— Asynchronous(๋น„๋™๊ธฐ) : ์ž‘์—…์„ ์œ„์ž„ํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹ ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐ ํ•˜๋ฉด, ๊ผญ ํ•œ ์ค„ ํ•œ ์ค„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜..

(c++) ์กฐ๊ฑด ๋ณ€์ˆ˜(Conditional Variable)
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2021. 3. 13. 20:16(c++) ์กฐ๊ฑด ๋ณ€์ˆ˜(Conditional Variable)

ใ€Š์ถœ์ฒ˜. ์‹œ์ž‘ํ•˜์ž! C++17 ํ”„๋กœ๊ทธ๋ž˜๋ฐ (๋ฐ•ํ—Œ์žฌ ์ง€์Œ)ใ€‹ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์Šค๋ ˆ๋“œ๋ผ ํ•˜๋”๋ผ๋„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ์ „๋‹ฌํ•  ์ •๋ณด๊ฐ€ ์žˆ๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ์šฐ๋ฆฌ๊ฐ€ ๊ณต๋ถ€ํ•  ๋ฐฉ๋ฒ•์€ '์กฐ๊ฑด๋ณ€์ˆ˜(Conditional Variable)' ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์กฐ๊ฑด๋ณ€์ˆ˜๋Š” ์ฃผ๋กœ ๊ฒŒ์ž„์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋‹ฌ๋ฆฌ๊ธฐ ์‹œํ•ฉ์ฒ˜๋Ÿผ ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ์ถœ๋ฐœ์„ ์ƒ์— ๋Œ€๊ธฐํ•œ ์ƒํƒœ์—์„œ ์ด์†Œ๋ฆฌ์™€ ํ•จ๊ป˜ ์ถœ๋ฐœํ•˜๋„๋ก ์Šค๋ ˆ๋“œ ๋ชจ๋‘ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ณ  ๋™์‹œ์— ๊ณต๋™ ๊ฒฝ์Ÿ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์กฐ๊ฑด๋ณ€์ˆ˜๋Š” ๋‹จ์ง€ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ธฐ๋Šฅ๋งŒ์„ ์ œ๊ณตํ•  ๋ฟ ์ž์ฒด ์ž ๊ธˆ ๊ธฐ๋Šฅ์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์ˆ˜์˜ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ์ž‘์—…์ด ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„ ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•จ์ˆ˜๋Š” wait(), notify_all() ํ•จ์ˆ˜์ด๋‹ค. ์กฐ๊ฑด๋ณ€..

728x90
image