cthread_unix.c 682 B

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