# 网络与并发
> 详细教程、完整示例与性能建议请参阅:[08_网络与并发编程指南.md](../08_网络与并发编程指南.md)
## 并发关键字
玄铁的并发是**双层架构**:轻量任务跑在用户态无栈状态机(fiber)调度器上,阻塞式任务跑在 OS 线程池上。编译器按异步块的内容自动选择执行层,无需手动指定。
| 关键字 | 说明 |
|--------|------|
| `异步 { ... }` | 创建异步任务,返回任务句柄(自动路由 fiber / 线程池) |
| `等待(任务)` | 等待任务完成并取回其 `返` 回值(无 `返` 则得 `空`) |
| `并行 { {a}, {b} }` | 并发执行多个代码块,返回结果数组 |
| `道(容量)` | 创建带缓冲的并发通道 |
| `选([通道数组], 超时毫秒)` | 等待多个通道中第一个就绪的,返回其下标;超时返回 `-1` |
> 自动路由规则、推荐模式、行为约定与禁忌(必读)详见 [08_网络与并发编程指南.md](../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")
}
```