#include <stdio.h>
#include <functional>
#include <memory>
#include <map>
#include <vector>
class WorkB
{
public:
WorkB() = default;
virtual ~WorkB() = default;
void Doit(int ret) {
if (notify_) {
notify_(ret, this);
}
}
public:
std::function<void(int, WorkB*)> notify_;
};
class WorkA
{
public:
WorkA() = default;
virtual ~WorkA() = default;
void AddOne(WorkB *p) {
p->notify_ = [&](int, WorkB*) {
wl.erase(wl.begin());
};//给notify 赋值
wl.push_back(p);
}
std::vector<WorkB*> wl;
};
int main()
{
WorkA a;
printf("wl size %d\n", a.wl.size());
WorkB *b = new WorkB();
a.AddOne(b);
printf("wl size 111 %d\n", a.wl.size());
b->Doit(0);
printf("wl size 222 %d\n", a.wl.size());
return 0;
}
有个场景,A是主线程,向B投递任务,出来完之后,回调A删除记录的元素,A非全局的。