Mutex์์ ๋น๊ต ์ฝ๋ #include #include #include #include #include #include using namespace std; class Node { public: int value; Node* next; Node() : value(0) { next = NULL; } Node(int k_value) { next = NULL; value = k_value; } }; int node_n; //random ๊ตฌํ random_device rd; mt19937 gen(rd()); uniform_int_distribution dis(0, 10); //์ถ๋ ฅ์ ์ํ mutex mutex mut; class LFStack { private: Node * head; public: void ..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ 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..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต Counter #include #include #include #include #include #include using namespace std; class Node { public: int value; Node* next; Node() : value(0) { next = NULL; } Node(int k_value) { next = NULL; value = k_value; } }; int node_n; //random ๊ตฌํ random_device rd; mt19937 gen(rd()); uniform_int_distribut..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต Hazard Pointer https://m.blog.naver.com/PostView.nhn?blogId=jjoommnn&logNo=130127286459&proxyReferer=https:%2F%2Fwww.google.com%2F ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์๋ค. ๋ฌธ์ ์ ๋จผ์ delete๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๋ฉด, ํด๋น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ์ค๋ ๋์ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์๊ณ ๊ฐ์ฒด๊ฐ ์ญ์ ๋ ์ฃผ์์ ๋ค์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ํ ๋น๋์ด ABA ๋ฌธ์ ๊ฐ ์ผ์ด๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ์๋ก ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌํ๋ list๊ฐ ์๋๋ค. 1๋ฒ ๋ฌธ์ ๋ฅผ ..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต ABA ํด๊ฒฐ intํ ๊ตฌํ ABA ๋ฌธ์ ๋ ๋งค๊ฐ๋ณ์๋ฅผ intํ์ผ๋ก ๊ตฌํํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ํ์ง๋ง ๋ฌธ์ ์ ์ ์กด์ฌํ๋ค(๋ท๋ถ๋ถ์ ์ธ๊ธ). ์ฝ๋ #define _CRT_SECURE_NO_WARNINGS #define NULL_INT -1 // NULL ๊ฐ #include #include #include #include #include // #include #include using namespace std; struct Node { int data; Node* next_node; }; int node_n; atomic free_l..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต ๋ฌธ์ ์ ์ ๋ฌธ์ Linked List ์๋ฃ๊ตฌ์กฐ์์ push()์ pop() ์ฐ์ฐ์ ๊ตฌํํ๋ค. Linked List๋ FreeList์ HeadList ๋๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋ ๊ฐ์ List๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ push, pop ์ฐ์ฐ์ ์ํํ๋ค. ์ค๋ ๋๋ค์ด ๊ฐ๊ฐ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด์๋ List๋ค์ ๋ํ ์ํธ๋ฐฐ์ ๊ฐ ํ์ํ๋ค. ํด์ ์ํธ ๋ฐฐ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ง๋ง, ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋ ์ ์๋ค. lock ๋ณ์์ ์กฐ๊ฑด์ ์ฒดํฌํ๋ฉฐ ๋ฐ๋ณต๋ฌธ์ ๋๊ณ ์๋ spin lock๊ณผ, lock ๋ณ์ ์์ด ๊ณ์ ์๋ํ๋ฉด์ ์ ์ ํ ๋์ ๋์์ ์ํ..
์ปจํ ์ด๋์ ๊ธฐ๋ณธ๊ฐ ์ฑ์ฐ๊ธฐ ๋ฐฐ์ด 1์ฐจ์ ๋ฐฐ์ด ๊ธฐ์กด ์ฝ๋ #include using namespace std; int main() { int arr[3]; for (int i = 0; i < 3; i++) { cout
SEED ARIA์ ํจ๊ป ๋ํ๋ฏผ๊ตญ ๊ตญ๊ฐ ํ์ค ์ํธ๋ฐฉ์ ์ฐธ๊ณ : https://ojava.tistory.com/103 ํน์ง 1999๋ 2์ ํ๊ตญ์ ๋ณด๋ณดํธ์งํฅ์์ด ๊ฐ๋ฐํ ์๊ณ ๋ฆฌ์ฆ DES์ ์๊ณ ๋ฆฌ์ฆ ๊ตฌ์กฐ๊ฐ ๊ธฐ์ ์ ์ผ๋ก ๋น์ทํจ feistel ๊ตฌ์กฐ ์ฌ์ฉ ์ธํฐ๋ท ๋ฑ ํน, ์ผํ ํ๊ฒฝ์์ ์ฃผ๋ก ์ฐ์ ActiveX๋ก ๋ฐฐํฌ๋จ => ์น ํธํ์ฑ ๋ฌธ์ ์น ์ฌ์ดํธ๊ฐ ์น ํ์ค์ ์ด๊ธฐ๊ณ MS์ฌ์ IE์์๋ง ์๋๋๋ ๋นํ์ค ๊ธฐ์ ์ ๋จ์ฉํ๋ ๊ฒ 2000๋ ๋ ์ดํ SSL์ด ๊ตญ์ ํ์ค์ผ๋ก ์ธ์ ๋์์ผ๋ ๋ํ๋ฏผ๊ตญ์ ๊ณ์ SEED๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๋ค. ISO/IEC ๊ตญ์ ๋ธ๋ก์ํธ์๊ณ ๋ฆฌ์ฆ, IETF ํ์ค์ผ๋ก ์ ์ ๋ฐฉ์ 128bit / 256bit ๋์นญ ํค ๋ธ๋ก ์ํธ ์๊ณ ๋ฆฌ์ฆ 128bit๋ ๊ตญ์ ํ์ค์ ๋ฑ์ฌ๋์ด ์์ง๋ง 256bit๋ ์์ง ๋ฑ์ฌ๋์ง ์์ D..
Comment