2024/09 6

[C#서버] Akka.net과 Actor모델 Part.1

1. Akka.net이란?.NET 플랫폼에서 사용할 수 있는 오픈 소스 프레임워크로, Actor 모델을 구현하여 병렬성과 분산 시스템을 쉽게 구축할 수 있도록 도와줍니다.2. Actor모델 이란?Actor 모델은 큰 프로젝트에서 여러 작업을 동시에 처리하거나, 많은 사용자가 동시에 접속하는 시스템을 만들 때 매우 유용한 패턴입니다. 이 모델을 이해하기 위해 먼저, 우리가 흔히 사용하는 객체 지향 프로그래밍(OOP)과 비교해볼게요.객체 지향 프로그래밍에서는 메서드를 호출하고, 객체의 상태를 변경하는 것이 기본입니다. 그러나 동시성 문제를 처리하려면 여러 스레드가 공유하는 메모리와 이를 관리하는 락(lock)이라는 장치를 사용해야 합니다. 하지만 락은 복잡할 뿐만 아니라, 잘못 사용하면 시스템이 멈추거나 성..

[C#] Func 람다식 Expression오류(cs0834)

우선 Func 람다 형식은 표현식(Expression)람다와 문(Statement)람다 2가지가 존재한다. 표현식(Expression) 람다: 하나의 표현식으로만 구성된 람다입니다. 이 경우 return 키워드를 사용하지 않고, 람다의 결과는 그 표현식 자체가 됩니다.Func square = x => x * x; // 표현식 람다문(Statement) 람다: 중괄호 {}를 사용하여 여러 문으로 구성된 람다입니다. 이 경우 return 키워드를 사용할 수 있습니다.Func square = x =>{ int result = x * x; return result; // 문 람다에서는 return 사용 가능}; C#에서 CS0834 오류는 "A lambda expression with a statem..

VisualStudio/C# 2024.09.11

[Unity][개념] UniTask VS 코루틴

UniTask는 기존의 코루틴보다 더 나은 비동기 처리를 가능하게 해주는 강력한 라이브러리입니다. 구체적인 장점과 사용 예시를 통해 UniTask의 유용성을 알아보겠습니다.UniTask를 사용하게 된 이유:코루틴의 예외 처리 제한: 코루틴은 try-catch로 예외 처리를 할 수 없어서 안정성이 떨어집니다.코루틴의 리턴 타입 제한: 코루틴은 리턴 타입이 없어 실행 결과를 리턴하려면 콜백을 사용해야 합니다. 이로 인해 복잡한 콜백 지옥이 발생할 수 있습니다.Task의 성능 문제: C#의 async Task는 힙 할당으로 인해 가비지 생성이 많아 잦은 호출이 어렵습니다. 하지만 UniTask는 struct 기반이어서 가비지 생성 문제가 없습니다.선형적인 코드 흐름: UniTask를 사용하면 콜백 없이 선형적..

Unity 2024.09.10

[Unity] JobSystem(2) NativeContainer와 TransformAccessArray

Job System과 Native Collections 특징Native collections는 성능 최적화와 메모리 관리 효율성을 위해 제공하는 데이터 구조입니다. 네이티브 메모리라고 불리는 공유 메모리 타입에 저장됩니다.  메모리 관리되지 않는 포인터가 들어 있습니다. Job System과 함께 사용하면 잡이 복사본으로 작업하는 것이 아닌 메인 스레드와 공유되는 데이터에 액세스 할 수 있습니다.주요 특징과 이점:멀티스레드 안전성: Native Collections은 Job System과 함께 사용할 때 쓰레드 안전성을 보장합니다. 일반적으로 C#의 List나 Array 같은 컬렉션은 쓰레드 안전하지 않아 멀티스레딩 작업에서 문제가 발생할 수 있습니다. 반면, Native Collections은 멀티스레..

Unity 2024.09.06

[Unity] JobSystem(1) 특징과 인터페이스 종류

JobSystem 생성 배경https://usingsystem.tistory.com/539 [Unity] DOTS 시스템과 Unity JobSystem, Burst, ECS 개념DOTS의 주요 목표와 적용 요약oop로 인해 메모리가 무분별하게 퍼져있는 메모리를 일관성 있게 메모리에 쌓아서 cpu가 캐시 l1, l2, l3에 캐시적중(캐시 적중 시 메모리를 정말 빠르게 읽을 수 있다.)usingsystem.tistory.com Unity의 Job System은 게임 엔진의 성능을 극대화하기 위해 설계된 멀티스레딩 프레임워크로, 작업을 작게 나누어 여러 스레드에서 동시에 처리하여 CPU 리소스를 효율적으로 활용하고 게임의 퍼포먼스를 크게 향상시킵니다. Job System의 주요 개념 및 동작 방식Job (작..

Unity 2024.09.06