0
|
1 #include <stdlib.h>
|
|
2 #include <stdio.h>
|
|
3 #include <pthread.h>
|
|
4
|
|
5 static void *
|
|
6 func (void *p)
|
|
7 {
|
|
8 return (NULL);
|
|
9 }
|
|
10
|
|
11 static void
|
|
12 test (void)
|
|
13 {
|
|
14 int rc;
|
|
15 pthread_attr_t my_pthread_attr;
|
|
16 pthread_t h;
|
|
17 long i;
|
|
18
|
|
19 rc = pthread_attr_init (&my_pthread_attr);
|
|
20
|
|
21 for (i = 1; i <= 10000; ++i) {
|
|
22 if (i%100 == 0) fprintf (stderr, "%i ", i);
|
|
23 if (i%1000 == 0) fprintf (stderr, "\n");
|
|
24 #ifndef STATIC
|
|
25 /* Some glibc versions don't like static multithreaded programs doing this. */
|
|
26 if (i==5000) __mf_set_options ("-thread-stack=192");
|
|
27 #endif
|
|
28 rc = pthread_create (&h, &my_pthread_attr,
|
|
29 func, NULL);
|
|
30 if (rc)
|
|
31 break;
|
|
32
|
|
33 rc = pthread_join (h, NULL);
|
|
34 if (rc)
|
|
35 break;
|
|
36 }
|
|
37
|
|
38 rc = pthread_attr_destroy (&my_pthread_attr);
|
|
39 }
|
|
40
|
|
41 int main ()
|
|
42 {
|
|
43 test ();
|
|
44
|
|
45 return (0);
|
|
46 }
|
|
47
|
|
48 /* { dg-timeout 20 } */
|
|
49 /* { dg-output "100 200 300 400 500 600 700 800 900 1000 \n" } */
|
|
50 /* { dg-output "1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 \n" } */
|
|
51 /* { dg-output "2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 \n" } */
|
|
52 /* { dg-output "3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 \n" } */
|
|
53 /* { dg-output "4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 \n" } */
|
|
54 /* { dg-output "5100 5200 5300 5400 5500 5600 5700 5800 5900 6000 \n" } */
|
|
55 /* { dg-output "6100 6200 6300 6400 6500 6600 6700 6800 6900 7000 \n" } */
|
|
56 /* { dg-output "7100 7200 7300 7400 7500 7600 7700 7800 7900 8000 \n" } */
|
|
57 /* { dg-output "8100 8200 8300 8400 8500 8600 8700 8800 8900 9000 \n" } */
|
|
58 /* { dg-output "9100 9200 9300 9400 9500 9600 9700 9800 9900 10000 \n" } */
|
|
59
|