初学,通过<The Rust Programming Language>学习了 rust ,想问一下关于以下场景在 rust 的最佳实现是什么。
A 、场景:多线程共享状态。
假设需求为,在一台 8 核心电脑上,由主线程创建 8 个子线程。主线程有变量 int a ,8 个子线程中逻辑为 while 循环每次 a++;直到 a 大于 1 亿为止退出子线程。
根据书中描述,Rust 可以使用 mutex 互斥锁来实现上述需求,我的问题有以下几点:
- 正常如 java 场景中类似需求可能使用偏向锁来减小同步开销,但 rust 书中似乎并无相关内容,那么生产环境应该如何实现呢?
- rust 书中推荐使用 channel 来同步,对于状态同步这种需求是否不适合用 channel 实现?
- 状态同步有一些进阶需求,比如如果我希望 8 个线程交替输出(即每次都从 1 到 8 每个线程执行一次 a++,而不是各个线程乱序执行),例如 java 中实现方法很多,比如可以使用信号量来实现,rust 中又该如何实现呢?
B 、场景:循环引用。
关于这个需求我暂时没想出合适的使用场景,只是在看 rust 的过程中产生疑问。即 rust 通过所有权来确保代码安全,那么对于典型的所有权交错的情况,按 rust 的设计思想应该如何处理呢?比如有 A ,B 两类,实例化后要求 A 对象中引用 B ,B 对象中引用 A ,rust 要怎么确保互相引用是安全的?
谢谢
