写点什么

招聘|欢迎加入非凸,学习 Rust,了解内存和线程安全问题

作者:非凸科技
  • 2022 年 4 月 06 日
  • 本文字数:1352 字

    阅读完需:约 4 分钟

Rust 编程语言旨在确保内存安全,它混合使用编译时静态检查和运行时锁来阻止程序访问无效指针或在没有适当同步的情况下跨线程共享内存。Rust 的实现方式通常理解是引入了可变的借用和不可变的引用、生命周期等。

 

1.独一无二的访问。如果一个变量对一个值有唯一访问权,那么对它进行修改是安全的。

 

2.独一无二的所有权。独一无二的访问的一种形式是所有权。当你用一个值初始化一个变量时,这个变量就成为那个值的唯一所有者。因为值只有一个所有者,所有者可以安全地修改值、销毁值或将值转移给新的所有者。

 

3.独一无二的借用。如果你对 T 类型的值有惟一的访问权,则可以使用借用对该值的惟一引用。对类型 T 的值的唯一引用具有类型 &mut T。

 

4.独一无二的借用不能被复制。一个 &mut T 类型的值不能被复制或克隆,因为这将导致对相同值有两个唯一性引用,它只能被移动。

 

5.共享访问。如果一个值同时存在多个可用于来访问它的可用变量,那么这个值就是共享的。

 

6.共享所有权。Rc<T>将在堆上为类型 T 的值分配空间,再加上一些额外的空间用于引用计数,然后你可以调用 Rc::clone 来增加引用计数,并生成另一个指向相同值的 Rc<T>。

 

7.共享借用。由于 Rc<T>对它的类型 T 值没有唯一的访问权,所以它不能生成唯一的 &mut T 借用(除非在运行时检查引用计数是否等于 1,但它实际上不是共享的借用)。但它可以生成类型 T 的共享引用 &T。

 

8.线程安全。Rust 通过标准库内置了两个 Trait,用来标记其他线程是否可安全访问的类型:

T: Send 意味着在单个其他线程上访问 T 是安全的,其中在执行时间线上每一个线程具有一次性的独占访问权。这种类型的值可以通过将独一无二的所有权转移到另一个线程,或者通过独一无二的借用(&mut T)在另一个线程上使用。

T: Sync 意味着多个线程可同时访问 T 是安全的,每个线程都有共享访问权限。这些类型的值可以通过共享引用(&T)在其他线程上访问<实际上是共享只读而不是写>。

 

9.共享可修改性。当值不发生改变修改时,共享是安全的,而当值不发生共享时,修改是安全的。但是如果我们想既要共享又要可改变一个值,怎么办呢?Rust 标准库为这种共享的可修改性提供了独特的实现机制,即 UnsafeCell,它创造性的结合 Send、Sync Trait 以实现混合静态检查和运行时检查来保证内存安全和线程安全。

 

非凸科技是 Rust 量化先行者,追求高效和极致。我们聘请优秀的人,采用先进的技术,建立卓越的团队,成就不平凡的非凸,为量化行业带来效率价值最大化!欢迎加入非凸,为自己拼搏,也成就彼此!

 

招聘岗位:Rust 开发工程师

 

工作内容:

1.设计并开发基于 Rust 的高性能,低时延算法交易系统;

2.设计并开发数据处理平台,监控运维平台;

3.设计并开发面向客户的高可用交易工具等;

4.设计并开发策略相关的回测平台。

 

岗位要求:

1.本科及以上学历(985 优先),编程基础扎实,具有良好的计算机理论基础;

2.熟练掌握 Linux 操作,性能分析,具备 Rust/C++/Java/Go 丰富开发经验,熟悉常用的设计模式,有分布式相关经验加分;

3.有研发高性能,低时延系统经验加分;

4.对技术充满热情,思考深入,自我驱动,能快速学习新鲜事物。

 

Base range:

30K-60K+期权激励+年终奖+员工福利

 

工作地点:北京、上海、成都、新加坡

简历发送至:recruit@ft.tech

微信沟通:354334592

邮件注明:姓名+岗位+来源

 

用户头像

非凸科技

关注

追求卓越算法,赋能量化交易 2022.02.22 加入

专注于智能算法交易领域的研究和开发

评论

发布
暂无评论
招聘|欢迎加入非凸,学习Rust,了解内存和线程安全问题_非凸科技_InfoQ写作平台