摘要

ZIO 包含以下数据类型,可以帮助您解决异步和并发编程中的复杂问题。

  • Fiber(纤程) – 纤程是对一个处于运行中的 IO 值的建模,它是一个绿色线程。
  • STM(Software Transactional Memory) – 软件事务性内存是一种支持事务运算并得到失败或成功的 effect。
  • ZIO – ZIO 是一个“效果化”的程序的模型,该程序可能失败或成功。
  • Managed – Managed 是一个值,它描述了一种可释放的,在给定范围内只能被消费一次的资源。
  • Promise – Promise 是一个变量模型,它可以被多个纤程共享但是只可以被设置一次。
  • Queue – Queue 是一个永不阻塞的异步队列,对于多个并发的生产者和使用者来说是安全的。
  • Ref – Ref[A] 对 A 类型的值的可变引用进行建模。它有两个基本的操作,set 将新值填充到 Ref 中,get 取回其当前内容。 Ref 上的所有操作都是原子和线程安全的,它为同步并发程序提供了可靠的基础。
  • FiberRef – FiberRef[A] 对 A 类型的值的可变引用进行建模。但与 Ref[A] 不同的是,该值仅能与当前执行中的 Fiber 绑定。您可以将其视为类似于 Java 的 ThreadLocal
  • Schedule – Schedule 是一个可重复任务的模型,它可被用于重复执行成功的或重试失败的 IO 值。
  • Semaphore – 信号量 Semaphore  是一个可与 ZIO 中断配合使用的异步(非阻塞)信号量。
  • Chunk – ZIO Chunk: 一个高效的,纯的 Arrays 的替代方案。
  • TArray – TArray[A] 是可以参与事务运算的的可变数组。
  • TMap – A TMap[A] 是可以参与事务运算的的可变 map
  • TPriorityQueue – A TPriorityQueue[A] 是可以参与事务的可变优先级队列。
  • TPromise – A TPromise 可参与事务运算的,只可以被设置一次的 Promise 可变量。
  • TQueue – A TQueue 是可以参与事务运算的可变队列。
  • TRef – A TRef 是一个可以参与事务运算的,对不可变量的可变参考。
  • TSet – A TSet 是可以参与事务的可变集合。
  • Has –  Has 用于表示一个 effect 对 A 类型服务的依赖关系。
  • ZLayer – A ZLayer 用于描述应用程序的一个“层”。

除了这些核心数据类型外,还可以在 ZIO streams 库中找到以下数据类型:

  • Sink — Sink 是 Stream 中的数据消费者的,当它从 Stream 中消费得数据后可能会返回一个值。
  • Stream — Stream 是一个惰性的并发异步数据源。

要了解有关这些数据类型的更多信息,请浏览上面的页面,或查看 Scaladoc 文档。

Leave a Reply
Your email address will not be published.
*
*

BACK TO TOP