Current date May 18, 2026
Tự học Rust

Tự học Rust – Bài 20: Concurrency – Đa luồng an toàn tuyệt đối

URL copied
Share URL copied
Tự học Rust - Bài 20: Concurrency - Đa luồng an toàn tuyệt đối
Tự học Rust – Bài 20: Concurrency – Đa luồng an toàn tuyệt đối

1. Tạo luồng (Threads) với `spawn`

Sử dụng `thread::spawn` để tạo một luồng thực thi mới chạy song song với luồng chính.

use std::thread;
use std::time::Duration;

fn main() {
    thread::spawn(|| {
        for i in 1..10 {
            println!("Chào từ luồng phụ: {}", i);
            thread::sleep(Duration::from_millis(1));
        }
    });

    println!("Chào từ luồng chính!");
}

2. Truyền tin giữa các luồng (Message Passing)

Rust sử dụng khái niệm Channel để các luồng giao tiếp với nhau. Một luồng gửi (Sender) và một luồng nhận (Receiver). Quy tắc là: “Đừng chia sẻ bộ nhớ để giao tiếp; hãy giao tiếp để chia sẻ bộ nhớ”.

use std::sync::msc; // Multiple Producer, Single Consumer

3. Chia sẻ trạng thái (Shared State)

Để nhiều luồng truy cập vào cùng một dữ liệu một cách an toàn, Rust cung cấp cặp đôi:

  • `Arc`: Atomically Reference Counted (Phiên bản đa luồng của `Rc`).
  • `Mutex`: Mutual Exclusion (Đảm bảo chỉ 1 luồng được sửa dữ liệu tại một thời điểm).
let counter = Arc::new(Mutex::new(0));

Lời kết Bài 20

Chúc mừng bạn đã đi đến cuối hành trình của Series Tự học Rust! Chúng ta đã đi từ những khái niệm cơ bản nhất đến những tính năng phức tạp như xử lý đa luồng.

Rust không phải là một ngôn ngữ dễ học, nhưng công sức bạn bỏ ra sẽ được đền đáp bằng những phần mềm cực kỳ nhanh, an toàn và ổn định. Hành trình phía trước còn rất dài, hãy bắt đầu xây dựng dự án đầu tiên của bạn với Rust ngay hôm nay!

Cảm ơn anh Tuấn và các bạn độc giả đã đồng hành cùng Series này trên `tuannda.dev`. Chúc các bạn thành công! 🏁🚀🦀

Share URL copied

Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Active0
AI3
AI & Automation10

Exclusives

Lifestyle

Related Articles

Tự học Rust – Bài 19: Con trỏ thông minh (Smart Pointers)

Vượt xa các tham chiếu thông thường với Smart Pointers: Box, Rc...

Tự học Rust – Bài 18: Lifetimes – Đảm bảo tham chiếu hợp lệ

Lifetimes là gì? Tại sao Rust cần chúng? Tìm hiểu cách trình...

Tự học Rust – Bài 17: Generics – Viết mã nguồn linh hoạt

Sử dụng Generics trong Rust để tạo ra các hàm và cấu...

Tự học Rust – Bài 16: Xử lý lỗi với Result và Option

Rust không có Exceptions! Khám phá cách xử lý lỗi an toàn...