---恢复内容开始---
Example 1
Creating and terminating thread by using
pthread_create, pthread_exit(status)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include <iostream> #include <cstdlib> #include <pthread.h> using
namespace std;
#define NUM_THREADS 5 void *PrintHello( void
*threadid)
{ long
tid;
tid = ( long )threadid;
cout << "Hello World! Thread ID, "
<< tid << endl;
pthread_exit(NULL);
} int
main ()
{ pthread_t threads[NUM_THREADS];
int
rc;
int
i;
for ( i=0; i < NUM_THREADS; i++ ){
cout << "main() : creating thread, "
<< i << endl;
rc = pthread_create(&threads[i], NULL,
PrintHello, ( void
*)i);
if
(rc){
cout << "Error:unable to create thread,"
<< rc << endl;
exit(-1);
}
}
pthread_exit(NULL);
} |
compile it with g++ xxx.cpp -o test -lphread
Example 2
Passing Arguments to Threads
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include <iostream> #include <cstdlib> #include <pthread.h> using
namespace std;
#define NUM_THREAD 5 struct
thread_data {
int
thread_id;
char
*message;
}; void
*PrintHello( void
*threadarg) {
struct
thread_data *my_data;
my_data = ( struct
thread_data*) threadarg;
cout << "Thread ID : "
<< my_data->thread_id << endl;
cout << "message : "
<< my_data->message << endl;
pthread_exit(NULL);
} int
main() {
pthread_t threads[NUM_THREAD];
struct
thread_data td[NUM_THREAD];
int
rc;
int
i;
for (i = 0; i < NUM_THREAD; i ++) {
cout << "main() : creating thread "
<< i << endl;
td[i].thread_id = i;
td[i].message = "This is message" ;
rc = pthread_create(&threads[i], NULL, PrintHello, ( void *)&td[i]);
if (rc) {
cout << "Error : unable to create thread "
<< rc << endl;
exit(-1);
}
}
pthread_exit(NULL);
} |
Example 3
Joining and Detaching thread
---恢复内容结束---