comparison libgomp/testsuite/libgomp.c++/ctor-1.C @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:a06113de4d67
1 // { dg-do run }
2
3 #include <omp.h>
4 #include <assert.h>
5
6 struct B
7 {
8 static int icount;
9 static int dcount;
10 static int xcount;
11
12 B();
13 B(const B &);
14 ~B();
15 B& operator=(const B &);
16 void doit();
17 };
18
19 int B::icount;
20 int B::dcount;
21 int B::xcount;
22
23 B::B()
24 {
25 #pragma omp atomic
26 icount++;
27 }
28
29 B::~B()
30 {
31 #pragma omp atomic
32 dcount++;
33 }
34
35 void B::doit()
36 {
37 #pragma omp atomic
38 xcount++;
39 }
40
41 static int nthreads;
42
43 void foo()
44 {
45 B b;
46 #pragma omp parallel private(b)
47 {
48 #pragma omp master
49 nthreads = omp_get_num_threads ();
50 b.doit();
51 }
52 }
53
54 int main()
55 {
56 omp_set_dynamic (0);
57 omp_set_num_threads (4);
58 foo();
59
60 assert (B::xcount == nthreads);
61 assert (B::icount == nthreads+1);
62 assert (B::dcount == nthreads+1);
63
64 return 0;
65 }