본문 바로가기
728x90

c#9

[c#/유니티] DeadLock과 SpinLock에 대해 DeadLock에 대해 알아보자 📌  데드락(DeadLock)이란?              두 개 이상의 프로세스가 서로의 작업이 끝나기만을 기다림. 둘 다 대기상태에 이르러 영원히 끝나지 않은 상황이다.              교착 상태라고도 말한다.                          👉 한정된 자원을 얻기 위해 서로 경쟁하기 때문에 발생한다.           🔎  DeadLock의 4가지 필요 조건                                아래 4가지 조건이 모두 만족되는 경우, 데드락이 발생하라 가능성이 있음                하나라도 만족하지 않으면 절대로 발생하지 않는다. -> 하나라도 해결되면, 데드락 문제를 풀 수 있다.                 .. 2022. 12. 8.
[c#/유니티] Interlocked에 대해 * Interlocked란? int 형 값을 증가시키거나 감소시키는 데 사용하는 클래스 이다. 원자성과 순서를 보장해준다. (단점 : 성능에서 손해) 다음과 같이 int 형 전역 변수인 number를 공유하고 있는 상황에서 Thread_1과 Thread_2가 number를 증가시키거나 감소시키는 작업을 하려 한다. static int number = 0; //전역변수 static void Thread_1() { for (int i = 0; i < 100000; i++) number++; } static void Thread_2() { for (int i = 0; i < 100000; i++) number--; } 결과값으로 0을 기대 했지만, 이상한 값이 나오는 것을 볼 수 있다. 왜..? 🤔 threa.. 2022. 12. 7.
[c#/유니티] 캐시(Cache) 이론과 메모리 배리어(Memory Barrier) * 캐시(Cache)란? 자주 사용하는 데이터나 값을 미리 복사해 둔 임시 장소이다. 저장공간이 작고 비용이 비싼 대신 빠른 성능 제공 장점 : 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터 접근이 가능함. 즉, DBMS 혹은 서버에 요청하기 보다는 메모리에 데이터를 저장하여 불러다 쓴다. -> DBMS의 부하가 줄어들며 성능을 높이기 위해서 사용 * 캐시(Cache) 철학 1) 시간 지역성(temporal locality) : 가장 최근에 사용한 변수가 또 사용될 확률이 높다 2) 공간 지역성(spacial locality) : 방금 접근한 주소와 인접한 주소의 변수가 사용될 확률이 높다 int[,] arr = new int[10000, 10000]; { long now .. 2022. 12. 6.
[c#/자료구조] 배열(Array) 자료구조 분류 단순 구조(Primitive Data Structure) : 기본적인 데이터 타입. 정수, 실수, 문자, 부울린 등의 기초 타입들 선형 구조(Linear Data Structure) : 자료가 선형적으로 연결되어 있는 구조. 배열, 연결리스트, 스택, 큐 비선형 구조(Non-linear Structure) : 자료 간 관계가 1대 다 혹은 다대다 구조. 네트워크 혹은 계층구조를 가짐. 트리, 그래프 파일 구조 : 레코드의 집합인 파일에 대한 자료구조. 순차파일, 색인 파일, 직접파일.. 1. 배열이란? ▶ 배열 : 연속적인 메모리 상에 동일한 데이터 타입의 요소들을 순차적으로 저장하는 자료구조 - 각 요소마다 인덱스를 갖고 있음 - 크기가 고정되어 있음 1차원 배열 선언 Int[] A = .. 2022. 12. 6.
728x90
반응형