C++ Multithread Tutorial
---恢复内容开始---
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
---恢复内容结束---

浙公网安备 33010602011771号