# thread.cancellation 库模块帮助文档

[协作式取消](https://www.aardio.com/zh-cn/docs/library/thread/cancellation/index.html)

## thread 成员列表 <a id="thread" href="#thread">&#x23;</a>

### thread.cancellation() <a id="thread.cancellation" href="#thread.cancellation">&#x23;</a>
[返回对象:cancellationSourceObject](#cancellationSourceObject)

## thread.cancellation 成员列表 <a id="thread.cancellation" href="#thread.cancellation">&#x23;</a>

一次性协作式取消  
手动复位事件；取消后持续有信号，不提供 reset/pulse。不是强杀线程或任务清理器。

创建新的取消源，失败返回 null,错误信息。  
每个任务一个新源；源必须保留到所有 worker 结束。仅 token 描述符可跨线程/进程传递。

### thread.cancellation.cancel(令牌描述符) <a id="thread.cancellation.cancel" href="#thread.cancellation.cancel">&#x23;</a>
凭描述符请求取消，可跨进程调用；只打开、不创建。  
成功返回 true；失败返回 null,错误信息,可选系统代码。重复取消安全，不等于任务已经结束。

### thread.cancellation.open() <a id="thread.cancellation.open" href="#thread.cancellation.open">&#x23;</a>
[返回对象:cancellationObserverObject](#cancellationObserverObject)

### thread.cancellation.open(令牌描述符) <a id="thread.cancellation.open" href="#thread.cancellation.open">&#x23;</a>
只打开已有取消事件，返回只读观察者；失败返回 null,错误信息,可选系统代码。  
绝不重建已失效的令牌；观察者持独立不可继承 SYNCHRONIZE 句柄。使用后调用 close。

## cancellationObserverObject 成员列表 <a id="cancellationObserverObject" href="#cancellationObserverObject">&#x23;</a>

### cancellationObserverObject.close() <a id="cancellationObserverObject.close" href="#cancellationObserverObject.close">&#x23;</a>
关闭观察者自有句柄，handle 设为 null；可重复调用，也由 GC 兜底。

### cancellationObserverObject.handle <a id="cancellationObserverObject.handle" href="#cancellationObserverObject.handle">&#x23;</a>
借用的只读等待句柄，可传给多句柄等待；不得自行关闭。  
也可直接把观察者传给 mutex.wait(timeout,observer) 或 waitOne。

### cancellationObserverObject.isCancelled() <a id="cancellationObserverObject.isCancelled" href="#cancellationObserverObject.isCancelled">&#x23;</a>
非阻塞检查：已取消 true，未取消 false，失败 null,状态,原生代码。  
不要把检查失败当成未取消；关闭后检查会失败。

### cancellationObserverObject.wait(超时毫秒) <a id="cancellationObserverObject.wait" href="#cancellationObserverObject.wait">&#x23;</a>
阻塞等待取消信号，默认无限；返回值同 thread.wait。  
成功 true 代表收到取消请求，不表示业务已经结束；超时 false,"timeout",258。

### cancellationObserverObject.waitOne(超时毫秒) <a id="cancellationObserverObject.waitOne" href="#cancellationObserverObject.waitOne">&#x23;</a>
处理窗口消息等待取消，返回值同 thread.waitOne；成功返回 1。  
worker 使用 wait 或 waitOne 均可；等待期间不得关闭观察者。

## cancellationSourceObject 成员列表 <a id="cancellationSourceObject" href="#cancellationSourceObject">&#x23;</a>

### cancellationSourceObject.cancel() <a id="cancellationSourceObject.cancel" href="#cancellationSourceObject.cancel">&#x23;</a>
请求取消，重复调用安全；不释放 source，不等待 worker。  
成功返回 true，关闭后返回 null,错误信息。

### cancellationSourceObject.close() <a id="cancellationSourceObject.close" href="#cancellationSourceObject.close">&#x23;</a>
关闭源的自有句柄；可重复调用，也由 GC 兜底。  
不是 cancel；仍存活的观察者继续有效；所有引用关闭后旧 token 失效。

### cancellationSourceObject.token <a id="cancellationSourceObject.token" href="#cancellationSourceObject.token">&#x23;</a>
可序列化的表 {schema=1;eventName="事件名称"}。  
可 JSON 编解码，不要修改；不包含句柄，不延长事件寿命。
