[interfacekit] Re: BHandler::fToken
- From: Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>
- To: interfacekit@xxxxxxxxxxxxx
- Date: Tue, 11 Mar 2003 21:07:03 +0100 (MET)
On Mon, 10 Mar 2003, Erik Jaesler wrote:
> Axel D=F6rfler wrote:
> > Erik Jaesler <erik@xxxxxxxxxxxxxx> wrote:
> >
> >>map for an unused token. How about this compromise solution:
> >>continue
> >>to place "returned" tokens on the stack, but don't use them until the
> >>token counter maxes out. Also, use a queue instead of a stack to add
> >
> > There is just one little problem with that method (depends on the
> > implementation, though :-)): when the token counter overflows, there
> > are about 4 billion entries on the stack... hm... that doesn't sound
> > very nice, does it=3D3F :-)
>
> Well, I suppose if I used a *little* intelligence I might think to put
> some kind of cap on the size of the queue. ;) Perhaps a few hundred or
> a thousand tokens? My thinking is that while you probably aren't *ever*
> going to overflow the counter and use the entire capacity of the queue
> at one time, if you find yourself enjoying the extended up-time that is
> often the priviledge of the BeOS user =3D) you may, over time, overflow
> the counter. It would be a bummer if from there on out, every allocated
> handler token had to checked against the map to make sure it wasn't
> being used -- the queue gives us a fast way to get tokens we *know*
> aren't being used. Granted, your box would have to be up a *very* long
> time before you overflowed the counter; nevertheless, it would be nice
> if the general case was that you either got a token based on the counter
> or from the queue rather than having to do the check.
As I wrote in my previous mail, I believe, a single check (i.e. lookup in
the hash map) is cheap -- an `add if not already existing', if available,
would be at no additional cost at all -- and actually I suspect it to be
even cheaper than removing a token from the queue.
Anyway, even if you have a million used tokens, the token space is still
rather empty. In average you had to do one additional check per 4000
invocations. However, a token is allocated when a BHandler is created.
That is usually not exactly a time critical operation in itself. So, even
if the million used tokens form one big cluster -- a million hash table
lookups won't take more than a fraction of a second on modern machines
anyway -- that shouldn't do much harm.
CU, Ingo
- Follow-Ups:
- [interfacekit] Re: BHandler::fToken
- From: Axel =?iso-8859-1?q?D=F6rfler
- References:
- [interfacekit] Re: BHandler::fToken
- From: Axel =?iso-8859-1?q?D=F6rfler
- [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: Axel =?iso-8859-1?q?D=F6rfler
- [interfacekit] Re: BHandler::fToken
- From: Axel =?iso-8859-1?q?D=F6rfler
- [interfacekit] Re: BHandler::fToken
- From: Erik Jaesler