[interfacekit] Re: BHandler::fToken
- From: "Marcus Overhagen" <ml@xxxxxxxxxxxx>
- To: interfacekit@xxxxxxxxxxxxx
- Date: Wed, 12 Mar 2003 02:34:14 GMT
Erik Jaesler wrote:
>
> The issue isn't how hard it is to find a known token value; the issue is
> the speed with which we can find the first available *unused* token
That's easy. Just atomic=5Fadd() some 32 bit counter, and each time you do it.
you get a fresh token. If you think it will overflow, use a 64 bit counter and
64 bit tokens.
> value. As BHandler-derived instances are destroyed, they return their
> token to BTokenSpace; that token can now be reused. BTokenSpace keeps
Please don't reuse tokens. It's not funny if an invalid BMessenger (for example)
get's valid again and targets another target.
> In the *extremely* unlikely event that an application actually manages
> to request 32 bits worth of tokens in a given execution, the counter
> will max out and BTokenSpace will have to start using returned tokens.
Did you calculate how likely that is=3F
Let's assume the computer needs to run for 10 Years continuously.
You have 4.294.967.295 unique tockens in a uint32.
That will allow to create 817 new tockens every minute, or 13 tokens
every second running ten years!
> The obvious solution is to walk the token-to-handler map beginning with
> 0 until you reach a value which is not contained in the map -- that
> token is not being used currently. In order to save the overhead of
> walking the map, BTokenSpace has a queue (actually a stack currently) in
> which returned tokens are placed so that once the internal counter is
> maxed out, you don't have to walk the map to try and find a token that
> isn't being used.
That won't work. Assume you limit the queue to 10.000 tokens.
When these are exhausted, you need to refresh it somehow (walking the map=3F)
If you don't limit the queue size, you will need about 16 GB to store them.
Using a 64 bit token space would be better (less memory, faster) solution,
if you really need more than 32 bit.
> Hope that clears the air a bit. ;)
Well, I hope you are not serious about storing all unised tokens in a queue.
Marcus
- Follow-Ups:
- [interfacekit] Re: BHandler::fToken
- From: Erik Jaesler
- References:
- [interfacekit] Re: BHandler::fToken
- From: Erik Jaesler
Other related posts:
- » [interfacekit] BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- » [interfacekit] Re: BHandler::fToken
- [interfacekit] Re: BHandler::fToken
- From: Erik Jaesler
- [interfacekit] Re: BHandler::fToken
- From: Erik Jaesler