33 lines
735 B
Markdown
33 lines
735 B
Markdown
|
|
# ITask::Release
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
void Release()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
减少引用计数。当引用计数归零时,对象会自动 delete 自身。
|
|||
|
|
|
|||
|
|
**参数:** 无
|
|||
|
|
|
|||
|
|
**返回:** 无
|
|||
|
|
|
|||
|
|
**复杂度:** O(1)
|
|||
|
|
|
|||
|
|
**注意:**
|
|||
|
|
- 任务提交给 TaskSystem 后,TaskSystem 会自动管理引用计数。
|
|||
|
|
- 当任务完成且无人持有引用时,任务对象将被自动销毁。
|
|||
|
|
- 不要在任务执行过程中调用 Release。
|
|||
|
|
|
|||
|
|
**示例:**
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
ITask* task = new MyTask();
|
|||
|
|
task->AddRef(); // 引用计数 = 2
|
|||
|
|
TaskSystem::Get().Submit(std::unique_ptr<ITask>(task)); // 引用计数 = 1
|
|||
|
|
task->Release(); // 引用计数 = 0,任务被 delete
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [ITask 总览](task.md) - 返回类总览
|
|||
|
|
- [AddRef](addref.md) - 增加引用计数
|