C 技术/库,用于组合容器和自定义逻辑

A C++ technique/library for combining a container and custom logic?

本文关键字:自定义 组合 技术 用于      更新时间:2023-10-16

我需要偶尔以延迟处理对象。但是,持有对象的线程不能延迟。

自然解决方案是要有一个单独的线程等待此类对象。当对象可用时,第二个线程将根据需要延迟并处理对象。第二个线程将在信号量上睡觉。当主线程具有延迟处理的对象时,它将对象将对象放入队列并发出信号信号。

虽然这会起作用,但仍有其他程序员(或i)可能会在排队对象时忘记信号的信号。我希望要执行此操作。

因此,我可能会创建自己的容器,该容器基于标准容器,但是增加了回调(也许使用基于策略的设计)和内部信号量。当将项目添加到容器中时,它将强制运行回调函数。

但是,这种功能似乎是如此有用,并且通常是希望的,以至于我敢打赌,有人已经编写了这本功能,可能比我在这里提出的更好的设计,并解决了诸如重新输入之类的毛茸茸的细节。是否存在图书馆?或者,是否有一种著名的技术来获得此功能?

我对此使用了私有继承,以及using声明:

struct myVec : private std::vector<int> {
 // Stuff that works the same
 using std::vector<int>::push_back;
 using std::vector<int>::erase;
 using std::vector<int>::iterator;
 // Stuff that works differently:
 void erase(std::vector<int>::iterator it) { ... }
};

重要的是不要使用标准容器中的公共继承。您 Will 最终写了与切片和非虚拟破坏者有关的错误。