Home | History | Annotate | Download | only in test
      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 darwin dragonfly freebsd linux netbsd openbsd solaris
      6 
      7 #include <pthread.h>
      8 #include "_cgo_export.h"
      9 
     10 static void*
     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
     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