Update about-counter.md

This commit is contained in:
xiehan
2021-06-17 01:49:50 +08:00
committed by GitHub
parent 910c249763
commit 52b5dd31fb

View File

@@ -187,20 +187,3 @@ count_by_name("c1")等价于count_by_name("c1", 1)。
虽然描述很复杂但总结起来就一句话按照创建顺序依次访问所有名字为name的计数器直到n为0。
也就是说一次count_by_name(name, n)可以唤醒多个计数器。
用好计数器,可以实现非常复杂的业务逻辑。计数器在我们框架里,往往用于实现异步锁,或者用于任务之间的通道。形态上更像一种控制任务。
# 计数器的扩展WFContainerTask
计数器像一种信号量每一个count操作并不能附带操作数据很多时候会带来一些不便。
大家如果把计数器想象成有向无环图上的一个节点每个count是一条入边。那么节点上可以有属性的但入边则没有包含任何信息。
而WFContainerTask则是一种给入边加上属性的任务。在[WFContainerTask.h](../src/factory/WFContainerTask.h)里,有相关的定义:
~~~cpp
template<tyename T>
class WFContainerTask : public WFCounterTask
{
public:
void push(const T& value);
void push(T&& value);
...
};
~~~
有需要的用户可以自行查阅相关代码。由于WFTaskFactory没有提供工厂函数创造container任务需要自己调用new。