Introduction 프로그래밍에서 스레딩은 런타임 성능을 최적화하고, 복잡한 문제를 풀기 위한 중요한 도구입니다. Rust에서는 이러한 작업을 안전하고 효과적으로 수행할 수 있도록 많은 기능을 제공합니다. 이 포스트에서는 Rust의 스레딩 모델과 std::thread 라이브러리를 중점적으로 살펴보겠습니다. Rust의 스레딩 모델 Rust의 스레딩 모델은 1:1 모델을 따릅니다. 이는 각각의 Rust 스레드가 하나의 운영체제 스레드에 직접 매핑된다는 것을 의미합니다. 이렇게 함으로써 Rust는 운영체제의 기본 스레딩 기능을 최대한 활용할 수 있습니다. 또한 이 모델은 운영체제 스레드와 같은 성능을 제공하며, 운영체제의 스케줄링과 스레드 간 통신 기능을 이용할 수 있습니다. std::thread Rust..
소개 Rust는 시스템 프로그래밍 언어로서, C++의 성능과 Python의 사용 편의성 사이에서 완벽한 균형을 찾으려는 목표를 가지고 있습니다. 그 중에서도 Rust의 가장 중요한 특징 중 하나는 '안전한 동시성 프로그래밍'입니다. 이 글에서는 Rust의 동시성 관련 기능과 이를 사용하여 어떻게 안전하게 코드를 작성할 수 있는지에 대해 살펴보겠습니다. 동시성과 병렬성: 이해하기 동시성(concurrency)과 병렬성(parallelism)은 프로그래밍에서 중요한 개념입니다. 동시성은 여러 작업이 시간을 공유하며 실행되는 것을 의미합니다. 이는 실제로 동시에 실행되지 않더라도 여러 작업이 동시에 진행되는 것처럼 보일 수 있습니다. 병렬성은 실제로 여러 작업이 동시에 실행되는 것을 의미합니다. Rust의 동..
개요 # Rust 언어는 `Option`과 `Result`라는 두 가지 열거형 타입을 제공하며 아래와 같은 특징을 가지고 있음 Option Option은 값이 존재하지 않을 수 있는 경우를 표현하기 위해 사용됨 이는 일종의 nullable 타입으로 생각할 수 있음 Option은 Some 또는 None 중 하나의 값을 가질 수 있음 Option는 Some(5)와 같이 정수 5를 값으로 가질 수도 있고 값이 존재하지 않는 None을 가질 수도 있습니다. 이는 컴파일 타임에 안전성을 제공해 값이 존재하지 않는 경우 발생할 수 있는 런타임 오류를 방지할 수 있습니다. Result Result는 함수의 반환 값으로 사용되며, 함수가 성공적으로 실행되었는지 또는 오류가 발생했는지를 나타냄 Result는 Ok 또는 ..
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..
Box heap에 할당된 값에 대한 소유권을 가진다는 뜻 일반적으로 heap 메모리에서 할당된 데이터를 관리하기 위해 사용됨 C++의 'unique_ptr'와 유사하며, 스택에 할당되는 대신 heap 메모리에 할당됨 Rc reference counting을 의미하며, 여러 개의 소유권이 필요한 경우 사용됨 여러 개의 소유권을 가질 수 있으며, 이를 통해 동일한 데이터에 대한 여러 개의 참조를 추적할 수 있음 C++의 'shared_ptr'와 유사하며, 여러 개의 소유권을 추적하여 해당 데이터가 더 이상 필요하지 않을 때 자동으로 제거됨 공통점 메모리 관리에 큰 도움을 줄 뿐만 아니라 코드의 안전성을 높이는 데 도움이 됨 예제 코드 use std::rc::Rc; fn box_value() { // Box로..