본문 바로가기

전체 글66

[C#] ReadWriteLock 구현 class Program { static BitFlagLock locked = new BitFlagLock(); static int number = 0; const int offset = 100000; static void Main(string[] args) { Task t1 = new Task(Thread1); Task t2 = new Task(Thread2); t1.Start(); t2.Start(); Task.WaitAll(t1, t2); Console.WriteLine(number); } static void Thread1() { for (int i = 0; i < offset; i++) { locked.WriteLock(); locked.WriteLock(); number++; locked.Wr.. 2023. 4. 5.
[C#] 공변성, 반공변성 X가 Y가 될 수 있다면, F(X)도 F(Y)가 될 수 있다 > 공변성 X가 Y가 될 수 있다면, F(Y)가 F(X)가 될 수 있다 > 반공변성 이다. 인터페이스, 델리게이트에만 달 수 있는 제약조건임 https://edykim.com/ko/post/what-are-covariance-and-contravariance/ 공변성과 반공변성은 무엇인가?Stephan Boyer의 What are covariance and contravariance?을 번역한 글이다. 공변성과 반공변성은 무엇인가? 서브타이핑은 프로그래밍 언어 이론에서 까다로운 주제다. 공변성과 반공변성은 오해하기 쉬운 주edykim.com위는 이해할 때 도움이 된 글임 요약하면, 1. 함수 타입에서 반환 타입은 공변적(covariant) 이고.. 2023. 4. 4.
[일상] 근래 알아본 1000만원 이하 중고차 정리 경차 공통 장점 : 취등록세 없음, 유류비 환급마크리(경차, 2~300) 09~11년식 장점 : 제일 쌈, 경차 치고 고속도로 안정성 높아보임 단점 : 미션 약함, 경차 치고 많이 오래 됨, 쉐보레임 올 뉴 모닝(경차, 4~500) 11~15년식 장점 : 가격 쌈, 수리비도 쌈 단점 : 방어력 약함, 고속도로에 비적합 더 넥스트 스파크(경차, 5~600) 15~18년식 장점 : 경차 치고 고속도로 안정성 높아보임 단점 : cvt 미션, 쉐보레임올 뉴 프라이드 해치백(소형, 4~600) 11~15년식 장점 : 수리비 쌈, 귀엽고 실용적 단점 : GDI말고는 매물이 별로 없음, 언뜻 보면 경차 같음 엑센트(소형, 4~600) 10~19년식 (보통 11~13) 장점 : 경차에 비해 고속도로 안정성 높아보임, .. 2023. 4. 3.
[C#] SpinLock 구현 class Program { static SpinLock locked = new SpinLock(); static int number = 0; const int offset = 100000; static void Main(string[] args) { Task t1 = new Task(Thread1); Task t2 = new Task(Thread2); t1.Start(); t2.Start(); Task.WaitAll(t1, t2); Console.WriteLine(number); } static void Thread1() { for (int i = 0; i < offset; i++) { locked.Acquire(); number++; locked.Release(); } } static void Thr.. 2023. 3. 29.