mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03: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