aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/support/thd_win32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/support/thd_win32.c')
-rw-r--r--src/core/support/thd_win32.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/core/support/thd_win32.c b/src/core/support/thd_win32.c
index 1762f87f3c..2ee1417048 100644
--- a/src/core/support/thd_win32.c
+++ b/src/core/support/thd_win32.c
@@ -58,16 +58,18 @@ static DWORD WINAPI thread_body(void *v) {
int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg,
const gpr_thd_options *options) {
HANDLE handle;
+ DWORD thread_id;
struct thd_arg *a = gpr_malloc(sizeof(*a));
a->body = thd_body;
a->arg = arg;
*t = 0;
- handle = CreateThread(NULL, 64 * 1024, thread_body, a, 0, NULL);
+ handle = CreateThread(NULL, 64 * 1024, thread_body, a, 0, &thread_id);
if (handle == NULL) {
gpr_free(a);
} else {
CloseHandle(handle); /* threads are "detached" */
}
+ *t = (gpr_thd_id)thread_id;
return handle != NULL;
}
@@ -77,4 +79,8 @@ gpr_thd_options gpr_thd_options_default(void) {
return options;
}
+gpr_thd_id gpr_thd_currentid(void) {
+ return (gpr_thd_id)GetCurrentThreadId();
+}
+
#endif /* GPR_WIN32 */