|
|
Home » U++ Library support » U++ MT-multithreading and servers » StaticMutex/ONCELOCK question
|
|
Re: StaticMutex/ONCELOCK question [message #19940 is a reply to message #19928] |
Tue, 03 February 2009 20:28 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
luzr wrote on Tue, 03 February 2009 01:41 |
Do not get fooled by 3 'for' loops - these are just syntactic sugar to make ONCELOCK work on C statements and blocks - they in fact simulate the outer block
|
Thanks. I understand the idea with loops. I'm using similar technique to handle transactions myself.
What I do not understand is how uninitialized o_b_ works.
{
static volatile bool o_b_;
if(!ReadWithBarrier(o_b_)) {
...
}
}
Regards,
Novo
|
|
|
Re: StaticMutex/ONCELOCK question [message #19984 is a reply to message #19940] |
Sun, 08 February 2009 03:09 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
Novo wrote on Tue, 03 February 2009 14:28 |
What I do not understand is how uninitialized o_b_ works.
{
static volatile bool o_b_;
if(!ReadWithBarrier(o_b_)) {
...
}
}
|
I finally figured out that myself. ANSI-compatible compiler initializes all static POD data with zeroes before a very first function call. So, this static variable is always initialized in a thread-safe way.
There is always something to learn about C.
Regards,
Novo
|
|
|
Goto Forum:
Current Time: Fri Mar 29 10:26:03 CET 2024
Total time taken to generate the page: 0.01463 seconds
|
|
|