C++ std::atomic (1): 원자적 연산과 메모리 모델(Memory Model)
1. 개요 현대 멀티스레딩 환경에서 스레드 간 안전한 데이터 공유는 필수적이지만, std::mutex같은 OS기반 Lock은 무겁고, OS의 스케줄링으로 인한 컨텍스트 스위칭 비용이 발생하게 됩니다. C++의 std::atomic은 멀티스레딩 환경에서 OS차원의 Lock없이 안전하게 공유 자원에 접근할 수 있도록 도와주는 라이브러리입니다. 이번 ...
1. 개요 현대 멀티스레딩 환경에서 스레드 간 안전한 데이터 공유는 필수적이지만, std::mutex같은 OS기반 Lock은 무겁고, OS의 스케줄링으로 인한 컨텍스트 스위칭 비용이 발생하게 됩니다. C++의 std::atomic은 멀티스레딩 환경에서 OS차원의 Lock없이 안전하게 공유 자원에 접근할 수 있도록 도와주는 라이브러리입니다. 이번 ...
1. 개요 ICU4X는 Rust로 작성된 국제화 라이브러리로, C++에서도 사용할 수 있도록 FFI(외부 함수 인터페이스)를 제공합니다. 이번 글에서는 CMake를 활용하여 ICU4X를 C++ 프로젝트에 통합하는 방법을 설명하겠습니다. 2. 사전 준비 사항 Rust Toolchain 설치: ICU4X 핵심 로직 컴파일을 위한 cargo 및 ...
1. 개요 C++26부터 계약 프로그래밍(Contracts) 기능이 도입되었습니다. 기존의 assert 매크로가 단순히 런타임에 로직을 체크하는 디버깅 도구였다면, Contracts는 함수의 제약 사항을 언어적 차원에서 명시하는 강력한 기능을 제공합니다. 덕분에 개발자는 주석 대신 코드로 함수의 제약 사항을 명확히 명시할 수 있고, 컴파일러는 이 ...
1. 문제 분석 백준 2579 - 계단 오르기 위 문제의 핵심 조건과 목표을 정리하면 다음과 같이 요약할 수 있습니다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계...
이 글은 C++26 초안(P2996R13)과 bloomberg/clang-p2996 리플렉션 구현을 기반으로 작성되었습니다. C++26 표준이 확정되기 전까지는 내용이 부정확하거나 변경될 수 있습니다. 1. 개요 이번 C++26 표준에서는 많은 C++ 개발자들이 오랫동안 기다려온 기능인 컴파일 타임 리플렉션(Reflection)이 도입될 예정입니...
1. 빗금 명령어 준비하기 코드 최상단에 아래 코드를 입력해 주세요. from discord import app_commands 그다음으로 디스코드 앱 명령어는 글로벌 명령어와 길드 명령어가 존재하는데, 빠른 개발을 위해 개발을 하는 동안에는 길드 명령어로 사용을 해보겠습니다. 먼저 디스코드에서 개발자 모드를 켜야 합니다. 아래와 같이 디스코...
1. 간단한 봇 답장기능 만들기 지난 포스트에 썼던 코드에서 아래와 같이 코드를 추가해 주세요. bot = Bot() @bot.command(name="안녕", aliases=["반가워"]) async def send_hello(ctx: commands.Context): await ctx.send("안녕하세요!") with open("....
1. 에러 명령 프롬프트에 pip 를 입력하면 아래 사진과 같이 'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 뜹니다. 2. 원인 여러 가지 원인이 있겠지만 주로 아래 항목과 같은 경우가 많습니다. 시스템 환경 변수에 pip 의 경로를 추가하지 않음. pip install --...
시작하기 전 python3.8 이상 3.10 이하의 버전이 설치되어 있어야 합니다. python의 기본적인 문법은 알고 있어야 합니다. 1. discord.py 모듈 설치하기 명령 프롬프트에서 아래 명령어를 입력해 모듈을 설치해 주세요. > pip install discord.py 만약 pip 명령어가...
시작하기 전 discord 계정이 있어야 합니다. 이 포스트는 python언어를 이용해 포스팅 할 예정입니다. 1. Discord Developer Portal에서 애플리케이션 생성하기 먼저 Discord Developer Portal 에 들어가서, 로그인이 되어있지 않다면 로그인을 해 줍니다. 로그인을 하면 밑과 같은...