전체 글36 비동기 vs 동기 개요 동기 비동기 동시성 여러 종류 음식을 하나씩 조리함. 여러 종류 음식을 동시에 조리함. 일치화 손님이 올때까지 기다리다 같이 먹음. 손님을 기다리지 않고 먹음. 동기 방식 각 함수의 실행과 완료 시점이 일치한다. 한 시점에 모든 작업이 동시에 이뤄진다. 비동기 방식: 싱글 스레딩(코루틴) using System.Collections; public class Program { public static IEnumerator A() { Console.WriteLine($"{((Thread.CurrentThread.ManagedThreadId == 1) ? "Main" : "Worker")}: Start A"); yield return null; Console.WriteLine($"{((Thread.Cur.. 2021. 9. 8. async/await 비동기 작업 async/await 비동기 작업 async/await 키워드는 멀티 스레드로 비동기 작업을 수행한다. 우선 yield return을 간단하게 살펴보자. yield return using System; using System.Collections; using System.Threading; public class Program { public static void Main() { var enumerator = DoTaskAsync(); enumerator.MoveNext(); // [Main ] Thread ID: 1 Console.WriteLine($"[Main ] Thread ID: {Thread.CurrentThread.ManagedThreadId}"); if ((int)enumerator.Curr.. 2021. 8. 4. P/Invoke Marshal: C#에서 C++(native code) 사용하기 Native Code 란? Native Code는 다른 말로 Unmanaged Language이며, C와 C++가 대표적이다. Native Code는 컴파일 시 어셈블리어(≒기계어)로 바로 번역된다. 이에 반해 Managed Language는 중간언어(IL)로 우선 컴파일된다. C#과 JAVA가 대표적이다. 중간언어는 런타임 시 JIT컴파일에 의해 기계어로 번역된다. 📖 레퍼런스 Managed Code vs Native Code의 차이 StackOverFlow: what is native code ? P/Invoke Marshal ? 보통 어플리케이션은 생산성이 높은 Managed Language로 작성되는데, 특정 영역의 API는 Native Code외 사용할 수 없기 때문에 Native Code를 라.. 2021. 8. 2. Visaul Studio 활용 : C++ 동적 배열의 값 보는 법 동적 배열의 값 보는 법 힙메모리를 사용한 배열 a를 디버깅하면 a의 포인터 값만 드러날 뿐 요소의 값은 나오지 않는다. ✏️ 배열이름은 첫번째 요소의 주소를 가리킨다. a의 요소 값을 추적해보자. 조사식 조사식에 직접 작성한다. 배열이름, 길이 메모리창 메모리창을 열자. 그리고 주소 입력부에 주소를 붙여넣으면, a[0], a[1], a[2] 값이 드러난다. int형이므로 4바이트 단위인 것을 확인할 수 있다. 📖 디버깅 레퍼런스 서적 『Debugging Applications for Microsoft .NET』 - 존 로빈스 2021. 7. 30. BinaryWriter/Reader 이해하기: Write, Read, vs StreamWriter Write, Read BinaryWriter와 BinaryReader는 스트림 버퍼를 쓰거나 읽는 클래스다. FileStream을 Write/Read 해보자. using System; using System.IO; namespace StreamStudy { class Program { static void Main(string[] args) { DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories(); if (File.Exists("CDriveDirs.txt")) { File.Delete("CDriveDirs.txt"); } // Write using FileStream fw = new FileStream("CDriveDirs.txt", Fi.. 2021. 7. 12. 이전 1 2 3 4 ··· 8 다음