mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	We have a single thread that runs a no-op initialization once and then repeatedly runs checks of the initialization (i.e., an acquire load and conditional jump) in a tight loop. This gives us, on average, the best-case latency of pthread_once (the initialization is the exactly-once slow path, and we're not looking at initialization-related synchronization overheads in this case).
		
			
				
	
	
		
			10 lines
		
	
	
		
			434 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			10 lines
		
	
	
		
			434 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # This tests the common-case scenario for pthread_once.
 | |
| # We have a single thread that runs a no-op initialization once and then
 | |
| # repeatedly runs checks of the initialization (i.e., an acquire load and
 | |
| # conditional jump) in a tight loop.
 | |
| # scripts/bench.py doesn't handle function pointers, so we just use void *:
 | |
| ## args: pthread_once_t *:void *
 | |
| ## includes: pthread.h
 | |
| ## include-sources: pthread_once-source.c
 | |
| &once, once_handler
 |