![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv73sJ%2FbtqFjqsteHV%2FLp86vxVJklmxN2vQUP1ZT0%2Fimg.png)
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค DCAS _InterlockedCompareExchange128 ์ฌ์ฉ ์์ Counter ๊ธฐ๋ฒ๊ณผ ๋น์ทํ๋ค. 64bit๋ฅผ ๋ชจ๋ ์ด์ฉํ์ฌ ์ฃผ์๋ฅผ ํํํ๋ CPU์์๋ ์์ Counter ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก c++์ _InterlockedCompareExchange128 ์ฐ์ฐ์ ์ด์ฉํ์ฌ ์ด๋ฅผ ๋์ ํ ์ ์๋ค. ์ด ์ฐ์ฐ์ 64bit ์๋ฃํ 2๊ฐ๋ฅผ ๋ฌถ์ด์ 128bit๋ก CAS ์ฐ์ฐ์ ์ํํ ์ ์๋ค. ์ด ๋ 64bit ์ฉ ๋ถ๋ฆฌํ์ฌ ์๋ก์ด ๊ฐ์ผ๋ก ๋ฐ๊พธ์ด์ค ์ ์๋ค. lock ๋ณ์ ์ด์ฉ ์ด์ ๋ธ๋ฆฌ์ด๊น์ง ๋ณด๋ฉด lock-fr..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTL8f1%2FbtqDCbkkw19%2FINkvsqy6Up8rBpVsmfD5BK%2Fimg.png)
๋์๊ด https://www.acmicpc.net/problem/1461 ๋ฌธ์ ์ธ์ค์ด๋ ๋์๊ด์์ ์ผํ๋ค. ๋์๊ด์ ๊ฐ๋ฐฉ์๊ฐ์ด ๋๋์ ์ธ์ค์ด๋ ์ฌ๋๋ค์ด ๋ง๊ตฌ ๋์ ์ฑ ์ ๋ค์ ๊ฐ์ ธ๋ค ๋์์ผ ํ๋ค. ์ธ์ค์ด๋ ํ์ฌ 0์ ์๊ณ , ์ฌ๋๋ค์ด ๋ง๊ตฌ ๋์ ์ฑ ๋ ์ ๋ถ 0์ ์๋ค. ๊ฐ ์ฑ ๋ค์ ์๋ ์์น๊ฐ ์ฃผ์ด์ง ๋, ์ฑ ์ ๋ชจ๋ ์ ์๋ฆฌ์ ๋๋ ๋ ๋๋ ์ต์ ๊ฑธ์ ์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ธ์ค์ด๋ ํ ๊ฑธ์์ ์ขํ 1์นธ์ฉ ๊ฐ๋ฉฐ, ์ฑ ์ ์๋ ์์น๋ ์ ์ ์ขํ์ด๋ค. ์ฑ ์ ๋ชจ๋ ์ ์๋ฆฌ์ ๋๋ ํ์๋ ๋ค์ 0์ผ๋ก ๋์์ฌ ํ์๋ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ค์ด๋ ํ ๋ฒ์ ์ต๋ M๊ถ์ ์ฑ ์ ๋ค ์ ์๋ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์ฑ ์ ๊ฐ์ N๊ณผ, ์ธ์ค์ด๊ฐ ํ ๋ฒ์ ๋ค ์ ์๋ ์ฑ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์ฑ ์ ์์น๊ฐ ์ฃผ์ด์ง๋ค. N์ ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJxIRC%2FbtqDoTQt56q%2FIwDzKABxPVqchEHzvNnkx1%2Fimg.png)
์ปจํ ์ด๋์ ๊ธฐ๋ณธ๊ฐ ์ฑ์ฐ๊ธฐ ๋ฐฐ์ด 1์ฐจ์ ๋ฐฐ์ด ๊ธฐ์กด ์ฝ๋ #include using namespace std; int main() { int arr[3]; for (int i = 0; i < 3; i++) { cout
์์ ์ฐพ๊ธฐ ํ๋ก๊ทธ๋จ ๋ฐฉ๋ฒ n-1๊น์ง ๊ตฌํ๊ธฐ O(n) n-1 ๊น์ง ์์๋ฅผ ๋ชจ๋ ๊ตฌํ๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ์ง๊ธฐ ์์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ์์ ๋ฐฐ์ด๋ง ๋๋ฉด์ ๋๋์ด์ง๋์ง ํ๋จ O(n) ์์ ๋ฐฐ์ด์ ๋ง๋๋ ๋ฐ์ O(n) => ๋ฉ๋ฆฌํธ ์์ ๋ฃจํธ n๊น์ง ๋๋ฆฌ๋ฉด์ ์ง์ ์ ์ธํ๊ธฐ O(sqrt(n)) ์กฐ๊ฑด ์ถ๊ฐ ๋ช ๊ฐ์ ์์( 3, 5 )๋ฅผ ๊ฐ์ง๊ณ ํด๋น ์์ ๋ฐฐ์์ด๋ฉด ๋ฐ์ด๋๊ธฐ 3, 5 ๊ณ์ฐ ์ ๋๋์ด๋จ์ด์ง์ง ์์์ผ๋ฉด ํด๋น ์์ ๋ฐฐ์์๋ ๋๋์ด๋จ์ด์ง์ง ์์ ๊ตฌํ ์ ์ฃผ์ ํด๋น ์๊ฐ 3์ผ๋ก ๋๋์ด๋จ์ด์ง๋์ง, 5๋ก ๋๋์ด๋จ์ด์ง๋์ง๋ฅผ ๊ณ์ฐํ๋ ค๋ฉด ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ฌ์ฉํด์ผํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ ๋ณ์ ํ๋์ฉ ์ง์ ํ๊ณ 1์ฉ ๋ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ์ฑ 3๊ณผ 5์ ๊ณต๋ฐฐ์๊ฐ ๋์ค๋ฉด ๋จผ์ ๊ฑฐ์น๋ 3์ if๋ฌธ์์ continue ๋จ์ผ๋ก ..
Comment