]> Cypherpunks.ru repositories - gostls13.git/blob - misc/cgo/test/cthread_windows.c
Revert "runtime/cgo: store M for C-created thread in pthread key"
[gostls13.git] / misc / cgo / test / cthread_windows.c
1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 #define WIN32_LEAN_AND_MEAN
6 #include <windows.h>
7 #include <process.h>
8 #include "_cgo_export.h"
9
10 __stdcall
11 static unsigned int
12 addThread(void *p)
13 {
14         int i, max;
15         
16         max = *(int*)p;
17         for(i=0; i<max; i++)
18                 Add(i);
19         return 0;
20 }
21
22 void
23 doAdd(int max, int nthread)
24 {
25         enum { MaxThread = 20 };
26         int i;
27         uintptr_t thread_id[MaxThread];
28         
29         if(nthread > MaxThread)
30                 nthread = MaxThread;
31         for(i=0; i<nthread; i++)
32                 thread_id[i] = _beginthreadex(0, 0, addThread, &max, 0, 0);
33         for(i=0; i<nthread; i++) {
34                 WaitForSingleObject((HANDLE)thread_id[i], INFINITE);
35                 CloseHandle((HANDLE)thread_id[i]);
36         }
37 }