当前位置: 首页 > news >正文

网站极简设计建立网站基本知识

网站极简设计,建立网站基本知识,扬州市做网站,中国开发网站的公司完整代码#xff1a;https://github.com/chiehw/hello_rust/blob/main/crates/counter/src/lib.rs 定义 Trait Trait 可以看作是一种能力的抽象#xff0c;和接口有点类似。Trait 还能作为泛型约束条件#xff0c;作为参数的限制条件。 pub trait AtomicCounter: Send S…完整代码https://github.com/chiehw/hello_rust/blob/main/crates/counter/src/lib.rs 定义 Trait Trait 可以看作是一种能力的抽象和接口有点类似。Trait 还能作为泛型约束条件作为参数的限制条件。 pub trait AtomicCounter: Send Sync {type PrimitiveType;fn get(self) - Self::PrimitiveType; // 获取当前计数器的值。fn increase(self) - Self::PrimitiveType; // 自增并返回上一次的值fn add(self, count: Self::PrimitiveType) - Self::PrimitiveType; // 添加一个数并返回上一次的值fn reset(self) - Self::PrimitiveType; // 重置计数器fn into_inner(self) - Self::PrimitiveType; // 获取内部值 }简单的测试用例TDD 使用测试驱动开发可以让目标更明确这里先写个简单的测试案例。 #[cfg(test)] mod tests {use super::*;fn test_simpleCounter(counter: Counter)whereCounter: AtomicCounterPrimitiveType usize, // 使用 Trait 作为泛型约束条件{counter.reset();assert_eq!(0, counter.add(5));assert_eq!(5, counter.increase());assert_eq!(6, counter.get())}#[test]fn it_works() {test_simple(RelaxedCounter::new(10));} }亿点细节 直接封装 AtomicUsize #[derive(Default, Debug)] pub struct ConsistentCounter(AtomicUsize);impl ConsistentCounter {pub fn new(init_num: usize) - ConsistentCounter {ConsistentCounter(AtomicUsize::new(init_num))} }impl AtomicCounter for ConsistentCounter {type PrimitiveType usize;fn get(self) - Self::PrimitiveType {self.0.load(Ordering::SeqCst)}fn increase(self) - Self::PrimitiveType {self.add(1)}fn add(self, count: Self::PrimitiveType) - Self::PrimitiveType {self.0.fetch_add(count, Ordering::SeqCst)}fn reset(self) - Self::PrimitiveType {self.0.swap(0, Ordering::SeqCst)}fn into_inner(self) - Self::PrimitiveType {self.0.into_inner()} }增加测试用例 使用多线程同时对计数器进行操作然后判断计数的结果是否正确。更多的测试案例请查看【完整代码】 fn test_increaseCounter(counter: ArcCounter)whereCounter: AtomicCounterPrimitiveType usize Debug static,{println!([] test_increase: Spawning {} thread, each with {}, NUM_THREADS, NUM_ITERATIONS);let mut join_handles Vec::new();// 创建 NUM_THREADS 个线程同时使用 increase 函数for _ in 0..NUM_THREADS {let counter_ref counter.clone();join_handles.push(thread::spawn(move || {let counter: Counter counter_ref.deref();for _ in 0..NUM_ITERATIONS {counter.increase();}}));}// 等待线程完成for handle in join_handles {handle.join().unwrap();}let count Arc::try_unwrap(counter).unwrap().into_inner();let excepted_num NUM_ITERATIONS * NUM_THREADS;println!([] test_increase: get count {}, excepted num is {}, count, excepted_num);// 确定 count 正确assert_eq!(count, excepted_num)}参考教程 谈谈 C 中的内存顺序 (Memory Order)https://luyuhuang.tech/2022/06/25/cpp-memory-order.html#happens-before
http://www.zqtcl.cn/news/751901/

相关文章:

  • 网站建设管理标准wordpress rss采集
  • 乐清网站建设费用装修房子的app软件哪个好
  • 专业网站搭建运营工业网站素材
  • 建网站要会什么wordpress电影下载站
  • 济南设计网站的公司西安模板网站建设
  • 网站搜索功能如何实现网络培训学习心得体会
  • 网站设计方案书ppt网站展示型推广
  • 中国建设注册管理中心网站首页大连地区建设网站
  • 广州致峰网站建设藁城网络推广
  • 怎么做免费个人网站wordpress dux 5.3
  • 手机触屏版网站网站功能介绍
  • 商场设计案例青岛百度快速排名优化
  • 制作网站要步骤湖北省建设厅网站上岗证查询
  • 网站建设制作公司都选万维科技制作网站需要注意什么
  • jsp小型网站开发wordpress微博插件
  • app充值网站开发怎么去做网站
  • 合肥建站网站模板word上下页纸张方向
  • 大学跳蚤市场网站建设哈尔滨网站建设
  • 网站开发合同中的知识产权条款怎么给公司建网站
  • 网站代维护wordpress 主题中心
  • 中铁广州建设有限公司网站临安做企业网站的公司
  • 国内可访问的海外网站和应用重庆好玩还是成都好玩
  • 定制开发小程序天津做网站优化的公司
  • 公司网站首页怎么做在线二级域名子域名查询
  • 淮南网站优化公司国内什么网站用asp.net
  • 做数据网站带网站的图片素材
  • 大方县住房城乡建设局网站wordpress 连接flickr
  • 国家建设部网站倪虹邢台新闻最新事件
  • 杭州网站 建设广州金将令做网站怎么样
  • 苏州科建设交通学院网站地方网站类型