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++; | ||||
| } | ||||
| 
 | ||||
| /* 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 | ||||
| exit_nicely(int code) | ||||
| { | ||||
| 	while (--on_exit_nicely_index >= 0) | ||||
| 		(*on_exit_nicely_list[on_exit_nicely_index].function)(code, | ||||
| 			on_exit_nicely_list[on_exit_nicely_index].arg); | ||||
| #ifdef WIN32 | ||||
| 	if (parallel_init_done && GetCurrentThreadId() != mainThreadId) | ||||
| 		ExitThread(code); | ||||
| #endif | ||||
| 	int		i; | ||||
| 
 | ||||
| 	for (i = on_exit_nicely_index - 1; i >= 0; i--) | ||||
| 		(*on_exit_nicely_list[i].function)(code, | ||||
| 			on_exit_nicely_list[i].arg); | ||||
| 
 | ||||
| 	exit(code); | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user