์ ์ฒด ๊ธ110 std::thread์ std::async โ ์ค๋ ๋ ๊ธฐ๋ฐ ์ ๊ทผ vs ๊ณผ์ ๊ธฐ๋ฐ ์ ๊ทผ work๋ผ๋ ํจ์๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ์ ๋๋ค. ํ๋๋ std::thread ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๊ทธ ๊ฐ์ฒด์์ work๋ฅผ ์คํํ๋ ๊ฒ์ด๊ณ , ์ด๋ ์ค๋ ๋ ๊ธฐ๋ฐ(thread-based) ํ๋ก๊ทธ๋๋ฐ์ ํด๋นํฉ๋๋ค. ๋ ํ๋๋ work๋ฅผ std::async์ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด๊ณ ์ด๋ ๊ณผ์ ๊ธฐ๋ฐ(task-based) ํ๋ก๊ทธ๋๋ฐ์ ํด๋นํฉ๋๋ค. int work(); std::thread t(work); auto f = std::async(work); ์ ์ฝ๋๋ฅผ ์ง๊ด์ ์ผ๋ก ๋ณด์์ ๋, async๋ฅผ ์ฐ๋ฉด work์ ๋ฐํ ๊ฐ์ ์ป์ ์ ์๋ค๋ ๊ฒ์ด ๋ณด์ ๋๋ค.(std::get์ ํตํด ์ป์ ์ ์์ต๋๋ค)(thread๋ ํจ์์ ๋ฐํ ๊ฐ์ ์ป์ ์ ์์ต๋๋ค.) ์ด๊ฒ ๋ฟ๋ง ์๋๋ผ .. 2023. 1. 14. [std] iterator๋ณด๋จ const_iterator ! ๊ฐ๋ฅํ ํ ํญ์ const๋ฅผ ์ฌ์ฉํ๋ผ๋ ํ์ค ๊ดํ์ ๋ฐ๋ณต์์๊ฒ๋ ์ ์ฉ๋ฉ๋๋ค. ๋ฐ๋ณต์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์์ ํ ํ์๊ฐ ์์ ๋๋ ํญ์ const_iterator๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. std::vector data; auto itr = std::find(data.cbegin(), data.cend(), 5);// cbegin, cend์ฌ์ฉ if (itr == data.cend()) data.push_back(5); 2023. 1. 14. ๊ฐ์ฒด ์์ฑ์ ์๊ดํธ์ ์ค๊ดํธ ์ฐจ์ด C++ 11์ ๊ท ์ผ ์ด๊ธฐํ(uniform initialization)๋ฅผ ๋์ ํ์ต๋๋ค. ๊ท ์ผ ์ด๊ธฐํ ๊ตฌ๋ฌธ์ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด์ ์๋ ํํํ ์ ์์๋ ๋ฐฉ์์ ๊ฐ์ฒด ์์ฑ์ ํํํ ์ ์์ต๋๋ค. class Foo { ... private: int x{0};// OK int y = 0; // OK int z(0);// Error! }; ๋ฐ๋ฉด ๋ณต์ฌํ ์ ์๋ ๊ฐ์ฒด(์๋ฅผ ๋ค๋ฉด std::atomic)์ ์ค๊ดํธ๋ ์๊ดํธ๋ก๋ ์ด๊ธฐํํ ์ ์์ง๋ง =๋ก๋ ์ด๊ธฐํ ํ ์ ์์ต๋๋ค. std::atomic val1{0};//OK std::atomic val2(0);//OK std::atomic val3 = 0;//Error! ๋, ์ค๊ดํธ ์ด๊ธฐํ์ ํ์ ์ ์ธ ๊ธฐ๋ฅ์ ๋ฐ๋ฅด์ง ์์ ์๋ฌต์ ํ๋ณํ์ ๋ฐฉ์งํ๋ค๋ ๊ฒ์ ๋๋ค. double .. 2023. 1. 14. [C++]ํฌ์ธํฐ์ ๋ ํผ๋ฐ์ค ์ฐจ์ด C++์์ ํฌ์ธํฐ์ ๋ ํผ๋ฐ์ค๋ ๋ชจ๋ ๋ณ์๋ฅผ ๊ฐ๋ฆฌํค๊ฑฐ๋ ์ฐธ์กฐํ๋๋ฐ ์ฌ์ฉ๋์ง๋ง, ๊ทธ๋ค ๊ฐ์ ์ค์ํ ์ฐจ์ด์ ์ด ์์ต๋๋ค. ์ ์ - ํฌ์ธํฐ(Pointer): ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์์ ๋๋ค. ๋ณ์์ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ ํด๋น ๋ณ์์ ๋ํ ๊ฐ์ ์ฐธ์กฐ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค. ํฌ์ธํฐ๋ '*' ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ฉฐ, ํ ๋น๋ ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. - ๋ ํผ๋ฐ์ค(Reference): ๋ ํผ๋ฐ์ค๋ ๊ธฐ์กด ๋ณ์์ ๋ณ์นญ(alias)์ ๋๋ค. ์ฆ, ๊ธฐ์กด ๋ณ์์ ๋ํ ๋ณ์นญ์ ๋ง๋ค์ด ํด๋น ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํฉ๋๋ค. ๋ ํผ๋ฐ์ค๋ '&' ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธ๋๋ฉฐ, ํ ๋ฒ ํ ๋น๋๋ฉด ๋ค๋ฅธ ๋ณ์๋ก ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ด๊ธฐํ - ํฌ์ธํฐ(Pointer): ํฌ์ธํฐ๋ ์ด๊ธฐํํ์ง ์๊ฑฐ๋ ๋ ํฌ์ธํฐ๋ก ์ด๊ธฐํํ ์ ์์ต๋๋ค... 2023. 1. 9. ์ปดํจํฐ ์ฑ๋ฅ ํฅ์ ๊ธฐ์ ๋ฉ์ธ๋ณด๋ ๋ด ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ๋ณ์ฅ์น๋ ์์คํ ๋ฒ์ค(FSB)๋ก ์ฐ๊ฒฐ๋์ด ์๊ณ , CPU ๋ด ALU, ์ ์ด์ฅ์น, ๋ ์ง์คํฐ๋ CPU ๋ด๋ถ ๋ฒ์ค(BSB)๋ก ์ฐ๊ฒฐ๋์ด ์๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋๋ ์์คํ ๋ฒ์ค์ ์๋์ ๊ฐ๊ณ , CPU์ ์๋๋ CPU ๋ด๋ถ ๋ฒ์ค์ ์๋์ ๊ฐ๋ค. CPU ๋ด๋ถ ๋ฒ์ค์ ์๋๊ฐ ์์คํ ๋ฒ์ค์ ์๋ ๋ณด๋ค ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น๋กฏํ ์ฃผ๋ณ์ฅ์น์ ์๋๊ฐ CPU์ ์๋๋ฅผ ๋ฐ๋ผ๊ฐ์ง ๋ชปํ๋ค. ์ฑ๋ฅ ํฅ์ ๊ธฐ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์๋๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ํด ๊ฐ๋ฐ๋ ๊ธฐ์ ์ค ์ด์์ฒด์ ์ ๊ด๋ จ๋ ๊ธฐ์ ์ ์ดํด๋ณด์. ๋ฒํผ ๋ฒํผ๋ ์๋์ ์ฐจ์ด๊ฐ ์๋ ๋ ์ฅ์น ์ฌ์ด์์ ๊ทธ ์ฐจ์ด๋ฅผ ์ํํ๋ ์ญํ ์ ํ๋ค. ๋ณด๊ด ์ฐฝ๊ณ ์์ ๊ทค 5๊ฐ๋ฅผ ๋๋ง๋ก ์ฎ๊ธธ ๋ ํ๋์ฉ ์ฎ๊ธฐ๋ ๊ฒ๋ณด๋ค ๋ฐ๊ตฌ๋๋ก 5๊ฐ๋ฅผ ์ฎ๊ธธ ์ ์๋๋ฐ, ์ฌ๊ธฐ์ ๋ฐ๊ตฌ๋๊ฐ ๋ฒํผ์ ํด๋นํ๋ค. ์ผ.. 2023. 1. 7. ๊ต์ฐฉ์ํ(DeadLock) ์์ฌ ํ์์ ์ด์์ฒด์ ๊ฐ ์๋ชป๋ ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ํน์ ํ๋ก์ธ์ค์ ์์ ์ด ์ง์ฐ๋๋ ๋ฌธ์ . ๊ต์ฐฉ ์ํ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์๋ก ์๋ณดํ์ง ์๋ ์ํ. ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ฉด ์ด์์ฒด์ ๊ฐ ๊ฐ์์ ์ผ๋ก ํด๊ฒฐํด์ผ ํ๋ค. ๊ต์ฐฉ ์ํ์ ๋ฐ์ ๊ต์ฐฉ ์ํ๋ ์์คํ ์์, ๊ณต์ ๋ณ์(๋๋ ํ์ผ), ์์ฉ ํ๋ก๊ทธ๋จ ๋ฑ์ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ค. ์์คํ ์์ ์๋ฅผ ๋ค๋ฉด, ํ๋ก์ธ์ค P1์ ํ๋ฆฐํฐ๋ฅผ ํ ๋น ๋ฐ์ ํ CD ๋ ์ฝ๋๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ํ๋ก์ธ์ค P2๋ CD ๋ ์ฝ๋๋ฅผ ํ ๋น ๋ฐ์ ํ ํ๋ฆฐํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉด ๊ต์ฐฉ ์ํ ๋ฐ์ ์ฌ๊ธฐ์ ํ๋ฆฐํฐ์ CD ๋ ์ฝ๋ ๊ฐ์ ์์์ ์๊ณ๊ตฌ์ญ์ผ๋ก ๋ณดํธ๋ฐ๊ณ ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ํ ์ ์๋ ์์์ ์ฌ์ฉํ ๋ ๋ฐ์(๋ํ์ ) ๊ณต์ ๋ณ์ ์๋ฅผ ๋ค๋ฉด, ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํ ๊ณต์ ๋ณ์์ ๊ฐ์ ๋ฐ๊พธ๋ฉด์ ๋ฌดํ ๋ฃจํ๋ฅผ ๋๋ ๊ฒฝ์ฐ ํ .. 2023. 1. 3. ์ด์ 1 ยทยทยท 13 14 15 16 17 18 19 ๋ค์