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 库中找到以下数据类型:
要了解有关这些数据类型的更多信息,请浏览上面的页面,或查看 Scaladoc 文档。