Swerve详细设计解析
1. 基础函数与值
首先介绍几个基础的函数和值:
fun evt (Abort ivar) = SyncVar.iGetEvt ivar fun aborted (Abort ivar) = isSome(SyncVar.iGetPoll ivar) fun force (Abort ivar) = (SyncVar.iPut(ivar, ())) handle _ => () fun never() = Abort (SyncVar.iVar())force函数:直接设置I变量。若该变量已设置,则忽略此次操作。never值:在确定不会超时的场景下很有用,例如服务器启动期间。由于它可以被强制设置,每个调用者必须获取不同的值。
2. 通用模块(Common Module)
通用模块收集了一些在整个服务器中都有用的小声明。为避免使用Common.前缀来限定声明,该模块通常在使用时直接打开。因此,不希望有过多声明,以免增加与服务器中其他标识符冲突的风险。
以下声明与服务器中止相关:
exception FatalX exception InternalError of string fun toErr s = (TextIO.output(TextIO.stdErr, s); TextIO.f