Multithreading 这个C++互斥代码的锈等效代码

Multithreading 这个C++互斥代码的锈等效代码,multithreading,rust,mutex,Multithreading,Rust,Mutex,上的互斥和线程示例 互联网不好,因为我无法找到如何使用互斥锁锁定方法来锁定代码块 //互斥示例 include//std::cout include//std::thread include//std::mutex std::mutex mtx;//临界区互斥 无效打印块整数n,字符c{ //通过锁定mtx发出的对std::cout的关键区段独占访问信号: mtx.lock; 对于int i=0;i我已经编写了类似的代码。它很好还是可以用更好的方式编写 use std::sync::{Arc,

上的互斥和线程示例 互联网不好,因为我无法找到如何使用互斥锁锁定方法来锁定代码块

//互斥示例 include//std::cout include//std::thread include//std::mutex std::mutex mtx;//临界区互斥 无效打印块整数n,字符c{ //通过锁定mtx发出的对std::cout的关键区段独占访问信号: mtx.lock;
对于int i=0;i我已经编写了类似的代码。它很好还是可以用更好的方式编写

use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    let mtx = Arc::new(Mutex::new(""));

    let mtx1 = mtx.clone();

    let mtx2 = mtx.clone();

    let n = 50;

    let th1 = thread::spawn(move || {
        mtx1.lock().unwrap();

        printData(n, "*".to_string());
    });

    let th2 = thread::spawn(move || {
        mtx2.lock().unwrap();

        printData(n, "$".to_string());
    });

    th1.join();
    th2.join();
}

fn printData(n: u32, c: String) {
    let mut str_val: String = "".to_string();

    for i in 0..n {
        str_val.push_str(&c);
    }

    println!("{}", str_val);
}

对于这个C++代码片段,将是类似于生锈的代码,如RISD例子中的锁环和打印,互斥体必须是这样的类型,例如使用STD::{弧:Mutex };使用STD::线程;FN main {让数据=ARC::NeMuteX::NeWVEC![1u32,2, 3 ];对于i,在0…3中,让DATA = DATA克隆;线程::{let mut data=data.lock.unwrap;data[i]+=1;};}线程::sleep_ms50;}请回答您的问题以添加该问题。@idclev463035818 doneIt看起来您的问题可能由的答案回答。如果不是,请您的问题解释差异。否则,我们可以将此问题标记为已回答。您在寻找吗?当您需要不保护任何东西的锁时,您可以使用aka单元类型g、 对于工作代码的审查,有
use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    let mtx = Arc::new(Mutex::new(""));

    let mtx1 = mtx.clone();

    let mtx2 = mtx.clone();

    let n = 50;

    let th1 = thread::spawn(move || {
        mtx1.lock().unwrap();

        printData(n, "*".to_string());
    });

    let th2 = thread::spawn(move || {
        mtx2.lock().unwrap();

        printData(n, "$".to_string());
    });

    th1.join();
    th2.join();
}

fn printData(n: u32, c: String) {
    let mut str_val: String = "".to_string();

    for i in 0..n {
        str_val.push_str(&c);
    }

    println!("{}", str_val);
}