diff options
author | Michael Stapelberg <stapelberg@debian.org> | 2013-03-04 21:27:36 +0100 |
---|---|---|
committer | Michael Stapelberg <michael@stapelberg.de> | 2013-03-04 21:27:36 +0100 |
commit | 04b08da9af0c450d645ab7389d1467308cfc2db8 (patch) | |
tree | db247935fa4f2f94408edc3acd5d0d4f997aa0d8 /misc/cgo/test/cthread_unix.c | |
parent | 917c5fb8ec48e22459d77e3849e6d388f93d3260 (diff) | |
download | golang-upstream/1.1_hg20130304.tar.gz |
Imported Upstream version 1.1~hg20130304upstream/1.1_hg20130304
Diffstat (limited to 'misc/cgo/test/cthread_unix.c')
-rw-r--r-- | misc/cgo/test/cthread_unix.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/misc/cgo/test/cthread_unix.c b/misc/cgo/test/cthread_unix.c new file mode 100644 index 000000000..998bc00cb --- /dev/null +++ b/misc/cgo/test/cthread_unix.c @@ -0,0 +1,34 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin freebsd linux netbsd openbsd + +#include <pthread.h> +#include "_cgo_export.h" + +static void* +addThread(void *p) +{ + int i, max; + + max = *(int*)p; + for(i=0; i<max; i++) + Add(i); + return 0; +} + +void +doAdd(int max, int nthread) +{ + enum { MaxThread = 20 }; + int i; + pthread_t thread_id[MaxThread]; + + if(nthread > MaxThread) + nthread = MaxThread; + for(i=0; i<nthread; i++) + pthread_create(&thread_id[i], 0, addThread, &max); + for(i=0; i<nthread; i++) + pthread_join(thread_id[i], 0); +} |