diff options
Diffstat (limited to 'src/bin/pg_dump/dumputils.c')
-rw-r--r-- | src/bin/pg_dump/dumputils.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c index 0b24220bd46..8f702594157 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -49,6 +49,7 @@ static void AddAcl(PQExpBuffer aclbuf, const char *keyword, #ifdef WIN32 static bool parallel_init_done = false; static DWORD tls_index; +static DWORD mainThreadId; #endif void @@ -59,6 +60,7 @@ init_parallel_dump_utils(void) { tls_index = TlsAlloc(); parallel_init_done = true; + mainThreadId = GetCurrentThreadId(); } #endif } @@ -1320,5 +1322,9 @@ 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 exit(code); } |