apache / apache/brpc

改进PeriodicTask

Open
#489 0 comments 1 reaction 0 assignees View on GitHub
official
Dominant language
C++
Stars
17.6k
Forks
4.1k
Avg merge
2d 12h
Merged PRs (30d)
69

Description

增加PeriodicTaskHandle<>
* 隐藏所需的引用计数
* 隐藏PeoridicTaskManager
* 简化用户对Task的生命周期管理。

```
PeriodicTaskHandle handle(new Task);

handle.ScheduleTaskAt(butil::milliseconds_from_now(...));
handle->MethodOfTask(); // race with Task::OnTriggeringTask()
handle.StopTask(); // non-blocking cancellation, Task::OnDestroyingTask() will be called before next Task::OnTriggeringTask(). Called by ~PeriodicTaskHandle automatically(repeated calling should be OK)
handle.StopAndJoinTask(); // blocking cancellation, Task::OnDestroyingTask() is called before this method returns.
```

实现中注意充分利用bthread_timer已有的取消机制,和task运行在独立的bthread中这一事实。保持最终实现的简洁性。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.