Re: code pattern for locking & unlocking
On 28/11/2010 14:39, Daniel Anderson wrote:
On Nov 26, 8:22 pm, "Hak...@gmail.com"<hak...@gmail.com> wrote:
On Nov 25, 5:48 pm, Daniel Anderson<woni...@gmail.com> wrote:
void someFunc()
{
// do some stuff
...
// now time to update share data
{
Lock myLock(data_mutex);
//use locked data
....
} // destructor called
// do more stuff
...
}
Some don't even know or haven long forgotten that you can create
blocks arbitrarily like this. I agree that it doesn't look nice, but
it has a lot of uses and i think there's nothing wrong with using it.
It's an incredibly simple and elegant way of solving this problem.
Simple, yes. I've doing it for a long time
elegant, I use to think so, until someone remove some braces in my
code that where there for RAII, since I do not think it is elegant
Well elegance is often a matter ot taste, but anyone who remove braces
from a piece of code without understanding the code gets much of what
they deserve. OTOH anyone who uses this kind of idiom without a comment
is being rather optimistic about the capabilities of maintenance
programmers.
I would like to have something like the using keyword in c#.
Is there a way to fake it in C++ ?
This is a C++ forum. C# is relevant to this question, but for those of
us who haven't worked with it, please post a short example.
for now I'm using an if to do it.
void someFunc()
{
// do some stuff
...
// now time to update share data
if (Lock myLock = Lock(data_mutex))
{
//use locked data
....
} // Unlock done by destructor
Well if you really want something other than comments to stop idiots
breaking your code then
bool just_once(false);
do {
// place your code here
} while(just_once);
Though i think that is awful :)
// do more stuff
...
}
Is it good programming ?
What a subjective question!
according to Plato (or was it Socrates) good is not subjective :)
The word 'good' has several meanings and in the current context I yake
it to mean 'socially acceptable' (the society being programmers) as
opposed to morally good which I think was what the Greek philosophers
were meaning. And I guess that in classical Greek the words for the two
meanings were almost certainly different but it is more than 50 years
since I had to toil at classical Greek.
--
Note that robinton.demon.co.uk addresses are no longer valid.
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]