1 #include <stdio.h> /* standard I/O routines */
2 #include <pthread.h> /* pthread functions and data structures */
3 #include <unistd.h> /* head file for sleep function */
4
5 /* global mutex for our program. assignment initializes it */
6 pthread_mutex_t a_mutex = PTHREAD_MUTEX_INITIALIZER;
7
8 /* function to be executed by the new thread */
9 void* do_loop(void* data)
10 {
11 int me = *((int*)data); /* thread identifying number */
12 int rc; /* contain mutex lock/unlock results */
13
14 /* lock the mutex, to assure exclusive */
15 rc = pthread_mutex_lock(&a_mutex);
16
17 for (int i=0; i< 4; i++)
18 {
19 printf("'%d' - Got '%d'\n", me, i);
20 sleep(1);
21 }
22
23 /* unlock mutex */
24 rc = pthread_mutex_unlock(&a_mutex);
25
26 /* terminate the thread */
27 pthread_exit(NULL);
28 }
29
30 /* like any CPlusPlus program, program's execution begins in main */
31 /*g++ -o Thread Thread.cpp -lpthread*/
32 int main(int argc, char* argv[])
33 {
34 int thr_id; /* thread ID for the newly created thread */
35 pthread_t p_thread1; /* thread's structure */
36 pthread_t p_thread2; /* thread's structure */
37 int a = 1; /* thread 1 identifying number */
38 int b = 2; /* thread 2 identifying number */
39
40 /* create a new thread that will execute 'do_loop()' */
41 thr_id = pthread_create(&p_thread1, NULL, do_loop, (void*)&a);
42
43 /* create a new thread */
44 thr_id = pthread_create(&p_thread2, NULL, do_loop, (void*)&b);
45
46 /*wait until sub thread exit*/
47 pthread_join(p_thread1, NULL);
48 pthread_join(p_thread2, NULL);
49
50 return 0;
51 }
52
编译: gcc -o pthread pthread.c -lpthread
Linux下线程与信号量例子