Go to the FreeLists Home Page Home Signup Help Login
 



Browse interfacekit: This Month's ArchiveMain Archive PageRelated postsPrevious by DateNext by Date

[interfacekit] Re: BAutolock::Unlock()

  • From: Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>
  • To: interfacekit@xxxxxxxxxxxxx
  • Date: Thu, 11 Sep 2003 01:06:58 +0200
On 2003-09-11 at 00:34:33 [+0200], DarkWyrm wrote:
> > 
> > since the list doesn't seem to be open for general subscription yet,
> > I
> > forward a request of Waldemar Kornewald's regarding the addition of a
> > BAutolock::Unlock() method. It would be implemented inline and hence
> > not
> > even render apps using it R5 binary incompatible.
> > 
> > Opinions?
> I'm inclined to go with your ObjectLocker.h suggestion.  It just seems
> to me like AutoLockers should also be AutoUnlockers without the Unlock
> method. I guess that's what BLockers are for. My $0.02. :^)

Oh, don't misunderstand that -- the normal BAutolock semantics wouldn't 
change at all. Unlock() would be an additional feature to allow unlocking 
before the object is destroyed. It may be helpful e.g. in a case like this:

        {
                BAutolock autolocker(lockable);
                ...
                if (special error condition) {
                        autolocker.Unlock();
                        // do cleanup that requires lockable to be unlocked
                        ...
                        return error;
                }
        ...
        }
        return B_OK;

That would otherwise need to be written e.g. like that:

        {
                BAutolock autolocker(lockable);
                ...
                if (special error condition)
                        goto err;
                ...
        }
        return B_OK;
        err:
        // do cleanup that requires lockable to be unlocked
        ...
        return error;

Given that I don't think that `goto's are an acceptable construct for 
structured programming, I don't need to say that I prefer the first 
version. :-P

CU, Ingo

Other related posts:

  • [interfacekit] BAutolock::Unlock()
  • [interfacekit] Re: BAutolock::Unlock()
  • [interfacekit] Re: BAutolock::Unlock()
  • [interfacekit] Re: BAutolock::Unlock()




  • [ Home | Signup | Help | Login | Archives | Lists ]

    All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
    Everything else ©2008 Avenir Technologies, LLC.