본문 바로가기

전체 글35

C] spinlock https://man7.org/linux/man-pages/man3/pthread_spin_init.3.html pthread_spin_init(3) - Linux manual page man7.org 대기 시간이 짧을 경우, mutex보다 spinlock이 훨씬 빠르게 작업을 처리한다.#include #include #define endl "\n"#define THREAD_COUNT 1000int value = 0;pthread_spinlock_t spinlock;void *f(void *data) { size_t idx = (size_t)data; for (int i = 0; i 스핀락의 경우, 초기화 시 락을 프로세스 단위로 공유할 것인지에 대한 여부를 설정해주어야 한다.프로세스 간 공유가 .. 2026. 3. 5.
C] pthread_mutex_t 활용하기 https://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread.h.html" data-og-description="The header defines the following symbols: PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DISABLE PTHREAD_CANCELED PTHREAD_COND_INITIALIZER PTHREAD_CREATE_DETACHED PTHREAD_CREATE_JOINABLE PTHREAD_EXPLICIT_SCHED PTHR" data-og-host="pubs.opengroup.org" data-og-source-url=.. 2026. 3. 4.
C] pthread 생성 및 활용 https://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread.h.html" data-og-description="The header defines the following symbols: PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DISABLE PTHREAD_CANCELED PTHREAD_COND_INITIALIZER PTHREAD_CREATE_DETACHED PTHREAD_CREATE_JOINABLE PTHREAD_EXPLICIT_SCHED PTHR" data-og-host="pubs.opengroup.org" data-og-source-url=.. 2026. 3. 4.
클린 아키텍처 방식으로 투두 만들어보기 클린 아키텍처를 읽고 느낀 것과 배운 것들을 바탕으로, 클린 아키텍처 방식으로 개발을 진행한다. 일반적인 아키텍처는 뷰 -> 메인 로직 -> 데이터베이스 방식의 의존성을 가지나, 클린 아키텍처 방식을 사용하게 된다면 뷰 -> 메인로직 클린 아키텍처에서는 프레임워크도, 데이터베이스도 모두 세부사항이다. 초기 개발 단계에서는 오로지 메인 로직에만 집중할 수 있으며, 주변 의존성에 대해 신경쓰지 않고 테스트도 용이하게 진행할 수 있다. 우선 메인 로직 작성을 위해, 새로운 프로젝트를 시작한다. 작업환경은 Visual Studio Code이다. 해당 리포지토리에는 어떠한 의존성도 존재하지 않는다. 이러한 스크래치 환경에서부터 개발을 진행한다. 우선 컴포넌트부터 설계를 진행해야 한다. 우선 기록을 위한 Tod.. 2026. 1. 28.
XUnit 테스트하기 자바의 JUnit과 같이, C#에도 XUnit이라는 테스트 프레임워크가 존재한다. 테스트 코드를 작성하기 위해선, 해당 솔루션 내부에 새 프로젝트를 생성하고, 해당 프로젝트에서 XUnit 패키지를 설치한 뒤, 테스트하려는 프로젝트를 참조 등록하여 테스트를 작성하면 된다. 일반적으로 테스트하려는 프로젝트 A가 있을 경우, A.Tests와 같이 테스트 프로젝트 이름을 명명한다. 테스트 메소드는 [Fact] 애트리부트를 작성해주는 것으로 설정할 수 있으며, Visual Studio의 테스트 탐색기를 활용하여 테스트 목록을 확인하고 실행시킬 수 있다. WPF 내 코드를 테스트하려는 경우, .NET 런타임을 버전을 Window 전용 버전으로 변경해주는 작업을 수행해야 한다. 프로젝트 메타데이터 파일인 csproj.. 2025. 12. 16.
XML 상에서 객체 생성하기 DataContext 등을 설정하기 위해 C# 등에서 코드로 직접 객체를 생성하고 설정하는 작업을 수행해도 되나, 간단히 객체만을 생성하여 등록하는 작업을 수행하면 되는 경우 XML 상에서 객체를 생성하고 바인딩하는 과정을 수행해주면 된다. Window에 데이터컨텍스트를 설정하려면 속성을 열고 내부에 xmlns:NAMESPACE=clr-namespace:NAMESPACE 로 지정해두었던 네임스페이스 내 객체를 명시해주면 된다. 혹은 Resources 내부에 객체를 생성해두고, Binding Source를 활용하여 리소스를 바인딩해주는 과정을 수행해주어도 된다. 복잡한 생성 과정을 가지고 있다면, C# 코드를 통해 생성하는 과정을 만드는 것이 좋다. 2025. 12. 16.