---恢复内容开始---
Example 1
Creating and terminating thread by using
pthread_create, pthread_exit(status)
#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
#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
---恢复内容结束---