(C#) False sharing(거짓 공유) - 병렬처리가 더 느릴 수 있다!

이번 포스팅은 False sharing(거짓 공유)에 대해 알아보고 이런 현상 이유와 해결하는 방법에 대해 알아보겠습니다. 우리는 어떤 작업에 대해서 오래 걸리는 작업인 경우 다수의 스레드를 이용해서 병렬처리를 하면 단일 처리를 하는 것 보다 더 빠르게 처리할 수 있다는것을 잘 알고 있습니다. 그런데 이렇게 빠르게 처리하기 위한 병렬처리 부분이 하드웨어(CPU) 구조적인 문제로 인해 정상 속도가 나오지 않는 문제가 있습니다. 심지어는 단일 스레드로 처리하는 속도 보다 더 느린 결과가 나올 수도 있습니다.

더보기

(C#) 동기화 설명 및 Volatile 동기화

멀티 스레드 환경에서 공유 자원에 대해 동시에 서로 읽고/쓰기 처리를 하는데 있어 동기화 처리 고려를 하지 않을 수 없습니다. 스레드 동기화 처리 방법은 크게 유저 모드에서 처리 되는 기법과 커널 모드에서 처리 되는 기법 두가지로 나눌 수 있는데 이번 글에서 유저 모드 동기 처리 방식은 Volatile 동기화에 대해 알아보도록 하겠습니다.

더보기

(C#) Lock-Free, Interlocked 사용 (CAS)

이전 포스팅에서 Volatile을 통한 원자적 동기 처리를 알아 보았습니다. 링크 이렇게 원자적 처리를 이용해서 읽기, 쓰기, 비교 처리를 사용해서 명시적인 Lock 사용 없이 Non-Blocking 으로 동기화 처리 할 수 있는데 이러한 방법을 Lock-Free 동기화 라고 부릅니다. 이번 글은 Lock-Free가 왜 필요한지 또 어떻게 구현되고 사용할 수 있는지에 대해 알아보겠습니다.

더보기

(WPF) WPF KakaoTalk PC버전 Clone 프로젝트

WPF로 KakaoTalk PC버전 클론 프로젝트 입니다. 서버와 별도 통신 기능이 없는 순수 클라이언트 기능을 WPF로 구현한 프로젝트 입니다. 서버 통신 이외 가급적 실제 동작할 수 있도록 구현 목표를 잡았으며 이 프로젝트는 WPF를 배우는 초급, 초중급 수준의 대상으로 학습 목적으로 제작하였습니다. 저 역시 모자란 부분이 많아 잘못된 부분이 있다면 같이 함께 학습하면서 고쳐봤으면 좋겠습니다.

더보기