]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.threads/manythreads.c
This commit was manufactured by cvs2svn to create branch
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.threads / manythreads.c
CommitLineData
899d9e3a 1/* Manythreads test program.
9b254dd1 2 Copyright 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
899d9e3a
JJ
3
4 Written by Jeff Johnston <jjohnstn@redhat.com>
5 Contributed by Red Hat
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
899d9e3a 12 (at your option) any later version.
a9762ec7 13
899d9e3a
JJ
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
a9762ec7 18
899d9e3a 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
899d9e3a 21
7339a42e
JJ
22#include <pthread.h>
23#include <stdio.h>
1e9f977e 24#include <limits.h>
7339a42e
JJ
25
26void *
27thread_function (void *arg)
28{
5bd2f6e2 29 int x = * (int *) arg;
7339a42e
JJ
30
31 printf ("Thread <%d> executing\n", x);
32
33 return NULL;
34}
35
36int
37main (int argc, char **argv)
38{
39 pthread_attr_t attr;
40 pthread_t threads[256];
5bd2f6e2 41 int args[256];
7339a42e
JJ
42 int i, j;
43
44 pthread_attr_init (&attr);
1e9f977e 45 pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
7339a42e
JJ
46
47 /* Create a ton of quick-executing threads, then wait for them to
48 complete. */
49 for (i = 0; i < 1000; ++i)
50 {
51 for (j = 0; j < 256; ++j)
52 {
5bd2f6e2
DJ
53 args[j] = i * 1000 + j;
54 pthread_create (&threads[j], &attr, thread_function, &args[j]);
7339a42e
JJ
55 }
56
57 for (j = 0; j < 256; ++j)
58 {
59 pthread_join (threads[j], NULL);
60 }
61 }
62
63 pthread_attr_destroy (&attr);
64
65 return 0;
66}