Dvorak
Dvorak

Dvorak Chen

Concurrency


Rust 和经典语言在习惯上的差异

本文介绍了作者在学习Rust编程语言过程中遇到的一些挑战。首先,文章讨论了Rust的所有权模型、借用检查器和并发机制带来的复杂性,以及如何通过单元结构体(struct D;)和实现trait来提供更好的抽象。接着,文章重点描述了Rust中常见的“包装”(wrap)模式,例如使用Box<dyn trait>来进行动态分配,Arc<Mutex<Box<dyn D>>>来处理多线程共享数据,并解释了这些包装的原因和必要性。最后,作者提到可以使用type关键字定义自定义类型名称以简化复杂的嵌套结构。文章总结了Rust编程中一些基础但重要的概念,尽管这些内容在熟练后看起来简单,但对于初学者来说可能需要较长时间适应。--DeepSeek

Rust memory-management Ownership System Smart Pointers Concurrency Thread Safety

在 Rust 中使用 Actor 模型

这篇博文探讨了在 Rust 中使用 Actor 模型来解决多线程共享变量的线程安全问题。文章首先介绍了在 Rust 中通过 `Mutex` 和 `HashMap` 来管理多个客户端连接的方式,但指出这种做法会导致阻塞问题,因为 `Mutex` 锁住 `HashMap` 期间其他线程无法访问资源。作者尝试优化代码以绕过生命周期检查,但这种方法不安全且不符合 Rust 的最佳实践。 随后,文章引入了 Actor 模型作为解决方案。每个客户端被建模为一个独立的 Actor,持有自己的 `TcpStream` 和消息队列(Inbox),通过消息传递来触发行为,从而避免了全局变量和原始指针的使用。这种设计不仅提高了代码的安全性和可维护性,还提供了一个干净且高效的多线程解决方案。 文章最后总结了 Actor 模型的优势,并鼓励读者探索其在类似场景中的应用。作者提供了示例代码仓库链接,方便读者进一步学习和实践。--DeepSeek

Rust Concurrency Thread Safety Mutex Actor Model TcpStream

  • 1