git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] win32: close handles of threads that have been joined
@ 2022-12-19 18:34 Rose via GitGitGadget
  2022-12-19 18:40 ` Ævar Arnfjörð Bjarmason
                   ` (2 more replies)
  0 siblings, 3 replies; 41+ messages in thread
From: Rose via GitGitGadget @ 2022-12-19 18:34 UTC (permalink / raw)
  To: git; +Cc: Rose, Seija Kijin

From: Seija Kijin <doremylover123@gmail.com>

After joining threads, the handle to the original thread
should be closed as it no longer needs to be open.

Signed-off-by: Seija Kijin <doremylover123@gmail.com>
---
    win32: close handles of threads that have been joined
    
    After joining threads, the handle to the original thread should be
    closed as it no longer needs to be open.
    
    Signed-off-by: Seija Kijin doremylover123@gmail.com

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1406%2FAtariDreams%2Fjoin-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1406/AtariDreams/join-v1
Pull-Request: https://github.com/git/git/pull/1406

 compat/win32/pthread.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/compat/win32/pthread.c b/compat/win32/pthread.c
index 2e7eead42cb..de89667ef70 100644
--- a/compat/win32/pthread.c
+++ b/compat/win32/pthread.c
@@ -39,14 +39,20 @@ int win32_pthread_join(pthread_t *thread, void **value_ptr)
 {
 	DWORD result = WaitForSingleObject(thread->handle, INFINITE);
 	switch (result) {
-		case WAIT_OBJECT_0:
-			if (value_ptr)
-				*value_ptr = thread->arg;
-			return 0;
-		case WAIT_ABANDONED:
-			return EINVAL;
-		default:
-			return err_win_to_posix(GetLastError());
+	case WAIT_OBJECT_0:
+		if (value_ptr)
+			*value_ptr = thread->arg;
+		/* detach the thread once the join succeeds */
+		CloseHandle(thread->handle);
+		return 0;
+	case WAIT_ABANDONED:
+		/* either thread is not joinable or another thread is waiting on
+		 * this, so we do not detatch */
+		return EINVAL;
+	default:
+	case WAIT_FAILED:
+		/* the function failed so we do not detach */
+		return err_win_to_posix(GetLastError());
 	}
 }
 

base-commit: 7c2ef319c52c4997256f5807564523dfd4acdfc7
-- 
gitgitgadget

^ permalink raw reply related	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2023-01-06 12:28 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-19 18:34 [PATCH] win32: close handles of threads that have been joined Rose via GitGitGadget
2022-12-19 18:40 ` Ævar Arnfjörð Bjarmason
2022-12-20  7:53 ` Johannes Sixt
2022-12-20 18:57 ` [PATCH v2] " Rose via GitGitGadget
2022-12-20 19:00   ` [PATCH v3] " Rose via GitGitGadget
2022-12-20 20:03     ` [PATCH v4 0/2] " Rose via GitGitGadget
2022-12-20 20:04       ` [PATCH v4 1/2] " Seija Kijin via GitGitGadget
2022-12-20 20:04       ` [PATCH v4 2/2] prep Seija Kijin via GitGitGadget
2022-12-20 21:18       ` [PATCH v5] win32: close handles of threads that have been joined Rose via GitGitGadget
2022-12-20 22:06         ` Johannes Sixt
2022-12-21  4:35         ` [PATCH v6 0/2] " Rose via GitGitGadget
2022-12-21  4:35           ` [PATCH v6 1/2] " Seija Kijin via GitGitGadget
2022-12-21  4:35           ` [PATCH v6 2/2] prep Seija Kijin via GitGitGadget
2022-12-21  4:46           ` [PATCH v7 0/2] win32: close handles of threads that have been joined Rose via GitGitGadget
2022-12-21  4:46             ` [PATCH v7 1/2] " Seija Kijin via GitGitGadget
2022-12-22  7:52               ` Johannes Sixt
2022-12-21  4:46             ` [PATCH v7 2/2] prep Seija Kijin via GitGitGadget
2022-12-22 16:01             ` [PATCH v8] win32: close handles of threads that have been joined Rose via GitGitGadget
2022-12-22 17:17               ` [PATCH v9 0/2] " Rose via GitGitGadget
2022-12-22 17:17                 ` [PATCH v9 1/2] " Seija Kijin via GitGitGadget
2022-12-22 17:17                 ` [PATCH v9 2/2] prep: reformat pthread.c to fit coding guidelines Seija Kijin via GitGitGadget
2022-12-23  1:51                   ` Junio C Hamano
2022-12-23 19:15                 ` [PATCH v10 0/2] win32: close handles of threads that have been joined Rose via GitGitGadget
2022-12-23 19:15                   ` [PATCH v10 1/2] win32-pthread: prepare pthread.c for change by formatting Seija Kijin via GitGitGadget
2022-12-23 19:15                   ` [PATCH v10 2/2] win32: close handles of threads that have been joined Seija Kijin via GitGitGadget
2022-12-23 19:19                   ` [PATCH v11 0/2] " Rose via GitGitGadget
2022-12-23 19:19                     ` [PATCH v11 1/2] win32-pthread: prepare pthread.c for change by formatting Seija Kijin via GitGitGadget
2022-12-23 19:19                     ` [PATCH v11 2/2] win32: close handles of threads that have been joined Seija Kijin via GitGitGadget
2022-12-24  7:50                       ` René Scharfe
2022-12-25  1:40                     ` [PATCH v12 0/2] " Rose via GitGitGadget
2022-12-25  1:40                       ` [PATCH v12 1/2] win32-pthread: prepare pthread.c for change by formatting Seija Kijin via GitGitGadget
2022-12-26  1:32                         ` Junio C Hamano
2022-12-25  1:40                       ` [PATCH v12 2/2] win32: close handles of threads that have been joined Seija Kijin via GitGitGadget
2022-12-26  2:07                         ` Junio C Hamano
2023-01-03 16:20                       ` [PATCH v13 0/2] " Rose via GitGitGadget
2023-01-03 16:20                         ` [PATCH v13 1/2] win32: prepare pthread.c for change by formatting Seija Kijin via GitGitGadget
2023-01-03 16:20                         ` [PATCH v13 2/2] win32: close handles of threads that have been joined Seija Kijin via GitGitGadget
2023-01-05 15:44                         ` [PATCH v14 0/2] " Rose via GitGitGadget
2023-01-05 15:44                           ` [PATCH v14 1/2] win32: prepare pthread.c for change by formatting Seija Kijin via GitGitGadget
2023-01-05 15:44                           ` [PATCH v14 2/2] win32: close handles of threads that have been joined Seija Kijin via GitGitGadget
2023-01-06 12:28                           ` [PATCH v14 0/2] " Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).