我正在用C++编写一个程序,可以拥有数十万个对象,每个对象都有一个“过期时间”,即如果对象在一定时间内不活动,则应该将其删除。许多对象非常频繁地变为活动状态,而且新对象也会相当快地创建出来。
我一直在犹豫如何处理。我一直在阅读Asio计时器的相关内容,但我不确定它们是否能够满足我的需求,以及如何使用它们。我有两种方法:
1.我可以为每个对象设置一个到期时间,并在对象执行某些操作时重置它。这意味着我将拥有数十万个定时器。
2.我可以建立一些计时器队列,例如30秒到期时间的30个计时器。第一个计时器是为剩余寿命30秒的对象而设的。如果它们不活动超过1秒钟,则它们被移动到剩余寿命为29秒的对象的计时器队列中,以此类推。最后一个队列中的对象如果不活动超过1秒钟就会被删除。任何变为活动状态的对象都会回到第一个队列。
第二种方法听起来更有效率,但它真的吗?如果Asio可以高效地处理大量的计时器,第二种方法可能会浪费我的很多精力。我该怎么做?或者有更好的方法吗?
注:在效率方面,我认为这里指的是更好的CPU利用率。内存使用是次要问题。
我一直在犹豫如何处理。我一直在阅读Asio计时器的相关内容,但我不确定它们是否能够满足我的需求,以及如何使用它们。我有两种方法:
1.我可以为每个对象设置一个到期时间,并在对象执行某些操作时重置它。这意味着我将拥有数十万个定时器。
2.我可以建立一些计时器队列,例如30秒到期时间的30个计时器。第一个计时器是为剩余寿命30秒的对象而设的。如果它们不活动超过1秒钟,则它们被移动到剩余寿命为29秒的对象的计时器队列中,以此类推。最后一个队列中的对象如果不活动超过1秒钟就会被删除。任何变为活动状态的对象都会回到第一个队列。
第二种方法听起来更有效率,但它真的吗?如果Asio可以高效地处理大量的计时器,第二种方法可能会浪费我的很多精力。我该怎么做?或者有更好的方法吗?
注:在效率方面,我认为这里指的是更好的CPU利用率。内存使用是次要问题。