基于 Swift async/await 的套接字库
这个库通过 async/await 接口公开了一个惯用的 Swift API,用于与 POSIX 套接字进行交互。这个库的独特之处(甚至 Swift NIO 仍然在使用自定义套接字/线程池)在于它完全使用 Swift 并发构建,并且不使用旧的阻塞 C API、CFSocket、DispatchIO、CFRunloop、GCD,或者显式地在 Swift 的全局协作线程池之外创建单个线程来管理套接字和轮询。
结果是一个针对 async/await 优化的,并从头开始构建的 Socket API。 此外,与 System 和 Concurrency API 一样,Socket 被表示为一个 struct
而不是一个类,大大降低了 ARC 开销。 套接字的内部状态由一个单例管理,该单例存储其状态,并保留一个托管文件描述符数组,因此轮询是全局的。
Socket
之外