mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Arrange for on_exit_nicely to be thread-safe.
Extracted from Joachim Wieland's parallel pg_dump patch, with some additional comments by me.
This commit is contained in:
		
							parent
							
								
									38b9693fd9
								
							
						
					
					
						commit
						5e86c61a7e
					
				| @ -1319,16 +1319,18 @@ on_exit_nicely(on_exit_nicely_callback function, void *arg) | |||||||
| 	on_exit_nicely_index++; | 	on_exit_nicely_index++; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Run accumulated on_exit_nicely callbacks and then exit quietly. */ | /*
 | ||||||
|  |  * Run accumulated on_exit_nicely callbacks in reverse order and then exit | ||||||
|  |  * quietly.  This needs to be thread-safe. | ||||||
|  |  */ | ||||||
| void | void | ||||||
| exit_nicely(int code) | exit_nicely(int code) | ||||||
| { | { | ||||||
| 	while (--on_exit_nicely_index >= 0) | 	int		i; | ||||||
| 		(*on_exit_nicely_list[on_exit_nicely_index].function)(code, | 
 | ||||||
| 			on_exit_nicely_list[on_exit_nicely_index].arg); | 	for (i = on_exit_nicely_index - 1; i >= 0; i--) | ||||||
| #ifdef WIN32 | 		(*on_exit_nicely_list[i].function)(code, | ||||||
| 	if (parallel_init_done && GetCurrentThreadId() != mainThreadId) | 			on_exit_nicely_list[i].arg); | ||||||
| 		ExitThread(code); | 
 | ||||||
| #endif |  | ||||||
| 	exit(code); | 	exit(code); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user