개발/Rust

개발/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로..

njsung
'개발/Rust' 카테고리의 글 목록