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 // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 
7 #include <pthread.h>
8 #include "_cgo_export.h"
9 
10 static void*
addThread(void * p)11 addThread(void *p)
12 {
13 	int i, max;
14 
15 	max = *(int*)p;
16 	for(i=0; i<max; i++)
17 		Add(i);
18 	return 0;
19 }
20 
21 void
doAdd(int max,int nthread)22 doAdd(int max, int nthread)
23 {
24 	enum { MaxThread = 20 };
25 	int i;
26 	pthread_t thread_id[MaxThread];
27 
28 	if(nthread > MaxThread)
29 		nthread = MaxThread;
30 	for(i=0; i<nthread; i++)
31 		pthread_create(&thread_id[i], 0, addThread, &max);
32 	for(i=0; i<nthread; i++)
33 		pthread_join(thread_id[i], 0);
34 }
35