| 
 | 
 | 
 
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: 1430 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: 1430 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: Tue Nov 04 07:18:26 CET 2025 
 Total time taken to generate the page: 0.07477 seconds 
 |   
 |  
  |