Mercurial > hg > Applications > Grep
annotate parallel_processing/ppb_first_thread/ppb_first_thread.cc @ 6:7b0b23f3538d
first pthread programming
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 02 Jan 2014 16:57:28 +0900 |
parents | 4b742b1fedb8 |
children | edf4445da580 |
rev | line source |
---|---|
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
1 #include <stdio.h> |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
2 #include <pthread.h> |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
3 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
4 #define THREAD_NUM 2 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
5 #define DATA_NUM 10 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
6 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
7 typedef struct _thread_arg { |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
8 int thread_no; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
9 int *data; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
10 } thread_arg_t; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
11 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
12 void * |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
13 thread_func(void *arg) |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
14 { |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
15 thread_arg_t *targ = (thread_arg_t *)arg; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
16 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
17 for (int i = 0; i < DATA_NUM; i++) { |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
18 printf("thread%d : %d + 1 = %d\n", |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
19 targ->thread_no, targ->data[i], targ->data[i] + 1); |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
20 } |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
21 return 0; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
22 } |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
23 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
24 int |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
25 main() |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
26 { |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
27 pthread_t handle[THREAD_NUM]; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
28 thread_arg_t targ[THREAD_NUM]; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
29 int data[DATA_NUM]; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
30 int i; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
31 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
32 for (i = 0; i < DATA_NUM; i++) data[i] = i; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
33 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
34 for (i = 0; i < THREAD_NUM; i++) { |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
35 targ[i].thread_no = i; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
36 targ[i].data = data; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
37 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
38 pthread_create(&handle[i], NULL, &thread_func, (void*)&targ[i]); |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
39 } |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
40 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
41 for (i = 0; i < THREAD_NUM; i++) pthread_join(handle[i], NULL); |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
42 return 0; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
43 } |