Mercurial > hg > Applications > Grep
annotate parallel_processing/ppb_cond_counter/ppb_cond_counter.c @ 16:57650a6829a1
add some files in ppb_cond_counter
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 06 Jan 2014 15:52:00 +0900 |
parents | parallel_processing/ppb_sem_counter/ppb_sem_counter.cc@08beb7bff036 |
children | 4d8d124528f2 |
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> |
14 | 3 #include <unistd.h> |
4 #include <semaphore.h> | |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
5 |
14 | 6 #define MAX_THREAD_NUM 2 |
7 #define THREAD_NUM 5 | |
8 | |
9 sem_t sem; | |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
10 |
15 | 11 /** |
12 * Mavericks では clang が default となっているが、書籍自体は gcc でコンパイルしている。 | |
13 * クラスタ環境に gcc が存在していたので、そこでコンパイルすると望ましい動作結果が得られた。 | |
14 * clang では・・・どうするんだろ | |
15 */ | |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
16 void * |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
17 thread_func(void *arg) |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
18 { |
14 | 19 long id = (long)arg; |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
20 |
14 | 21 /* starting semaphore and ending semaphore*/ |
22 sem_wait(&sem); | |
23 printf("Thread %ld started.\n", id); | |
24 sleep(1); | |
25 printf("Thread %ld finished.\n", id); | |
26 sem_post(&sem); | |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
27 return 0; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
28 } |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
29 |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
30 int |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
31 main() |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
32 { |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
33 pthread_t handle[THREAD_NUM]; |
14 | 34 long i; |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
35 |
7 | 36 /* initialize */ |
14 | 37 sem_init(&sem, 0, MAX_THREAD_NUM); |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
38 |
7 | 39 /* spawn thread a number of THREAD_NUM */ |
14 | 40 for (i = 0; i < THREAD_NUM; ++i) pthread_create(&handle[i], NULL, &thread_func, (void*)i); |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
41 |
7 | 42 /* wait for running all thread */ |
14 | 43 for (i = 0; i < THREAD_NUM; ++i) pthread_join(handle[i], NULL); |
11
f522b6bf6789
fix ppb_data_shared
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
10
diff
changeset
|
44 |
12 | 45 /* destroy mutex*/ |
14 | 46 sem_destroy(&sem); |
11
f522b6bf6789
fix ppb_data_shared
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
10
diff
changeset
|
47 |
6
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
48 return 0; |
7b0b23f3538d
first pthread programming
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
49 } |