我需要偶尔延迟处理一个对象。然而,持有对象的线程不能延迟。
一个自然的解决方案是让一个单独的线程等待这些对象。当一个对象变得可用时,第二个线程将根据需要延迟并处理该对象。第二个线程将在信号量上休眠。当主线程有一个对象需要延迟处理时,它会将对象放入一个队列并发出信号量。
虽然这可行,但另一个程序员(或我)可能会忘记在对对象进行排队时发出信号量。我希望强制执行。
因此,我可能会创建自己的容器,它基于标准容器,但添加了回调(可能使用基于策略的设计)和内部信号量。当一个项目被添加到容器中时,它将强制运行回调函数。
但是这个功能看起来非常有用,而且非常受欢迎,我敢打赌,有人已经写了这个,可能比我在这里提出的设计更好,并解决了诸如重入之类的毛茸茸的细节。是否存在用于此的库?或者,是否有一种众所周知的技术可以获取此功能?