Main

개발/Rust

Rust의 스레딩 모델과 std::thread 알아보기

Introduction 프로그래밍에서 스레딩은 런타임 성능을 최적화하고, 복잡한 문제를 풀기 위한 중요한 도구입니다. Rust에서는 이러한 작업을 안전하고 효과적으로 수행할 수 있도록 많은 기능을 제공합니다. 이 포스트에서는 Rust의 스레딩 모델과 std::thread 라이브러리를 중점적으로 살펴보겠습니다. Rust의 스레딩 모델 Rust의 스레딩 모델은 1:1 모델을 따릅니다. 이는 각각의 Rust 스레드가 하나의 운영체제 스레드에 직접 매핑된다는 것을 의미합니다. 이렇게 함으로써 Rust는 운영체제의 기본 스레딩 기능을 최대한 활용할 수 있습니다. 또한 이 모델은 운영체제 스레드와 같은 성능을 제공하며, 운영체제의 스케줄링과 스레드 간 통신 기능을 이용할 수 있습니다. std::thread Rust..

개발/Rust

Rust를 이용한 안전한 동시성 프로그래밍 예제

소개 Rust는 시스템 프로그래밍 언어로서, C++의 성능과 Python의 사용 편의성 사이에서 완벽한 균형을 찾으려는 목표를 가지고 있습니다. 그 중에서도 Rust의 가장 중요한 특징 중 하나는 '안전한 동시성 프로그래밍'입니다. 이 글에서는 Rust의 동시성 관련 기능과 이를 사용하여 어떻게 안전하게 코드를 작성할 수 있는지에 대해 살펴보겠습니다. 동시성과 병렬성: 이해하기 동시성(concurrency)과 병렬성(parallelism)은 프로그래밍에서 중요한 개념입니다. 동시성은 여러 작업이 시간을 공유하며 실행되는 것을 의미합니다. 이는 실제로 동시에 실행되지 않더라도 여러 작업이 동시에 진행되는 것처럼 보일 수 있습니다. 병렬성은 실제로 여러 작업이 동시에 실행되는 것을 의미합니다. Rust의 동..

개발/Rust

Rust의 Option과 Result 열거형

개요 # Rust 언어는 `Option`과 `Result`라는 두 가지 열거형 타입을 제공하며 아래와 같은 특징을 가지고 있음 Option Option은 값이 존재하지 않을 수 있는 경우를 표현하기 위해 사용됨 이는 일종의 nullable 타입으로 생각할 수 있음 Option은 Some 또는 None 중 하나의 값을 가질 수 있음 Option는 Some(5)와 같이 정수 5를 값으로 가질 수도 있고 값이 존재하지 않는 None을 가질 수도 있습니다. 이는 컴파일 타임에 안전성을 제공해 값이 존재하지 않는 경우 발생할 수 있는 런타임 오류를 방지할 수 있습니다. Result Result는 함수의 반환 값으로 사용되며, 함수가 성공적으로 실행되었는지 또는 오류가 발생했는지를 나타냄 Result는 Ok 또는 ..

개발/Rust

Visual Studio Code를 이용한 Rust Debug

vs code를 이용해 rust debug를 하는 방법에 대해 알아보려고한다. 1. vscode extension에서 CodeLLDB, rust-analyzer 설치 2. Run 패널에서 Add Configuration 설정 후 launch.json 파일이 열리면 아래처럼 설정 추가 project-name에 본인 프로젝트 이름 설정후 저장 { "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug executable", "cargo": { "args": [ "build", "--bin="project-name"", "--package="project-name"" ], "filter": { "n..

개인/라이프로그

[결혼준비] 웨딩홀 결정하기!

작년 중순부터 결혼을 준비하면서 가장 신경쓰고, 고민했던건 다름아니라 웨딩홀을 결정하는 문제였다. 양가 부모님이 모두 사업을 하시기도하고, 지방에 사시는 친인척분들이 많아서 교통이 좋은 곳과 넓고 편한 주차가 가능한 곳으로 결정하는 것이 최우선 순위였다. 많은 사람들이 웨딩홀을 결정하는 몇가지 기준이 있겠지만, 우리는 아래 순위에 맞춰서 웨딩홀을 검색했다. 교통(기차 혹은 지하철로 편하게 이동이 가능한 곳이면서 강북권) 주차(자차로 오시기에도 불편함없이 주차가 가능한 곳) 단독 홀(하객분들이 편하게 계셨으면 했음) 식사(뷔페식으로 대부분 하객들이 맛있게 드실 수 있었으면 했음) 우리는 해당 조건에 맞춰서 가장 처음 미팅했던 루이비스 중구(다산홀)로 바로 결정을했다! 교통 루이비스는 첫 인상이 굉장히 좋았..

개발/Rust

[Rust] Box와 Rc의 차이점

Box heap에 할당된 값에 대한 소유권을 가진다는 뜻 일반적으로 heap 메모리에서 할당된 데이터를 관리하기 위해 사용됨 C++의 'unique_ptr'와 유사하며, 스택에 할당되는 대신 heap 메모리에 할당됨 Rc reference counting을 의미하며, 여러 개의 소유권이 필요한 경우 사용됨 여러 개의 소유권을 가질 수 있으며, 이를 통해 동일한 데이터에 대한 여러 개의 참조를 추적할 수 있음 C++의 'shared_ptr'와 유사하며, 여러 개의 소유권을 추적하여 해당 데이터가 더 이상 필요하지 않을 때 자동으로 제거됨 공통점 메모리 관리에 큰 도움을 줄 뿐만 아니라 코드의 안전성을 높이는 데 도움이 됨 예제 코드 use std::rc::Rc; fn box_value() { // Box로..

개발/C++

3. c# string을 c++ DLL로 전달하는 방법

2023.01.31 - [개발/C++] - 1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기 2023.01.31 - [개발/C++] - 2. C++ DLL을 C#에서 이용하기 방법1. std::wstring 사용 C++ DLL 코드 #include extern "C" __declspec(dllexport) void FunctionName(const std::wstring& inputString) { std::wcout

개발/C++

2. C++ DLL을 C#에서 이용하기

2023.01.31 - [개발/C++] - 1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기 1. C++ DLL을 C#에서 사용하는 간단한 예제 C++ DLL(CPP.dll) #include extern "C" __declspec(dllexport) int AddNumbers(int a, int b) { return a + b; } C# using System; using System.Runtime.InteropServices;//import하지 않으면 DLLImport 사용 불가! namespace CSharpApp { class Program { [DllImport("CPP.dll")] public static extern int AddNumbers(int a, int b); static v..

njsung
'분류 전체보기' 카테고리의 글 목록 (3 Page)