官术网_书友最值得收藏!

Concurrency and mutability

Rust's approach to managing memory is a powerful concept. In fact, it is powerful enough to also facilitate concurrency and parallel execution. However, first things first: how do threads work in the Rust standard library?

Concurrency and parallelism are two different modes of execution. While concurrency means that parts of a program run independently of each other, parallelism refers to these parts executing at the same time. For simplicity, we will refer to both concepts as concurrency.

Due to its low-level nature, Rust provides an API to the operating system's threading capabilities (for example, POSIX on Linux/Unix systems). If no variables are passed into the scope, their usage is very straightforward:

use std::thread; 

fn threading() {
// The to pipes (||) is the space where parameters go,
// akin to a function signature's parameters, without
// the need to always declare types explicitly.
// This way, variables can move from the outer into the inner scope
let handle = thread::spawn(|| {
println!("Hello from a thread");
});
handle.join().unwrap();
}

However, when passing data back and forth, more work has to be done to hold up Rust's safety guarantees, especially when mutability comes into play. Before getting into that, it is important to recap immutability.

主站蜘蛛池模板: 新沂市| 温州市| 府谷县| 原平市| 苗栗市| 比如县| 屏南县| 黄浦区| 武强县| 赫章县| 忻城县| 山西省| 衡阳市| 读书| 陆河县| 太原市| 肥东县| 高平市| 炉霍县| 任丘市| 永城市| 七台河市| 华亭县| 抚顺县| 珠海市| 封丘县| 德阳市| 宁蒗| 北辰区| 山西省| 台湾省| 土默特左旗| 万山特区| 通道| 夏河县| 泸西县| 兴安盟| 黄骅市| 迁西县| 都兰县| 荥经县|