diff options
Diffstat (limited to 'src/cmd/cgo/internal/test/cthread_windows.c')
-rw-r--r-- | src/cmd/cgo/internal/test/cthread_windows.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cmd/cgo/internal/test/cthread_windows.c b/src/cmd/cgo/internal/test/cthread_windows.c index 3a62ddd373..4e52209dee 100644 --- a/src/cmd/cgo/internal/test/cthread_windows.c +++ b/src/cmd/cgo/internal/test/cthread_windows.c @@ -35,3 +35,25 @@ doAdd(int max, int nthread) CloseHandle((HANDLE)thread_id[i]); } } + +__stdcall +static unsigned int +goDummyCallbackThread(void* p) +{ + int i, max; + + max = *(int*)p; + for(i=0; i<max; i++) + goDummy(); + return 0; +} + +int +callGoInCThread(int max) +{ + uintptr_t thread_id; + thread_id = _beginthreadex(0, 0, goDummyCallbackThread, &max, 0, 0); + WaitForSingleObject((HANDLE)thread_id, INFINITE); + CloseHandle((HANDLE)thread_id); + return max; +} |