本文主要是介绍【crossbeam系列】1有锁并发、无锁并发和crossbeam极简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
随着计算机硬件和软件的发展,个人计算机里动辄几千几万线程已经成为家常便饭。而在程序中大量使用并发也成为了一个主流,因为这样的程序有更小的延迟,并且对多核CPU也有更充分的利用。
有锁并发
对于大多数程序员(当然我也基本上是其中一员),并发编程几乎就等价于给相关数据结构加上一个锁(Mutex)。比如如果我们需要一个支持并发的栈,那最简单的方法就是给一个单线程的栈加上锁std::sync::Mutex
。(加上Arc是为了能让多个线程都拥有栈的所有权)
use std::sync::{Mutex, Arc};#[derive(Clone)]
struct ConcurrentStack<T> {inner: Arc<Mutex<Vec<T>>>,
}impl<T> ConcurrentStack<T> {pub fn new() -> Self {ConcurrentStack {inner: Arc::new(Mutex::new(Vec::new())),}}pub fn push(&self, data: T) {let mut inner = self.inner.lock().unwrap();(*inner).push(data);}pub fn pop(&self) -> Option<T> {let mut inner = self.inner.l
这篇关于【crossbeam系列】1有锁并发、无锁并发和crossbeam极简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!