网络与并发
详细教程、完整示例与性能建议请参阅:08_网络与并发编程指南.md
并发关键字
玄铁的并发是双层架构:轻量任务跑在用户态无栈状态机(fiber)调度器上,阻塞式任务跑在 OS 线程池上。编译器按异步块的内容自动选择执行层,无需手动指定。
| 关键字 | 说明 |
|---|---|
异步 { ... } | 创建异步任务,返回任务句柄(自动路由 fiber / 线程池) |
等待(任务) | 等待任务完成并取回其 返 回值(无 返 则得 空) |
并行 { {a}, {b} } | 并发执行多个代码块,返回结果数组 |
道(容量) | 创建带缓冲的并发通道 |
选([通道数组], 超时毫秒) | 等待多个通道中第一个就绪的,返回其下标;超时返回 -1 |
自动路由规则、推荐模式、行为约定与禁忌(必读)详见 08_网络与并发编程指南.md 的 8.1.3/8.1.4 节。
网络原语
| 关键字 | 说明 |
|---|---|
求(url) | HTTP GET 请求,返回 结果<字符串> |
连(地址) | TCP 连接,返回 结果<Socket>;在 异步 块内为非阻塞挂起点(不卡调度器) |
听(端口, 回调) | TCP 监听,新连接触发回调 |
Socket 方法
| 方法 | 说明 |
|---|---|
.读() / .读(上限) | 读取数据返回字符串(对端关闭返回 空);异步 块内为就绪挂起且上限生效 |
.写(内容) / .发(内容) | 发送数据,返回 真/假;异步 块内为可写挂起、自动续传 |
.关() | 关闭连接(通常无需手动调用,ARC 自动管理) |
快速示例
xuantie
// HTTP 请求
设 resp = 求("http://api.example.com/data")
若 resp.成功 { 示(resp.值) }
// TCP 服务端
听(8000, 函(流) {
流.写("欢迎!")
示(流.读())
})
// TCP 客户端
设 conn = 连("127.0.0.1:8000")
若 conn.成功 {
conn.值.发("hello")
}