以下简单的实例代码使用 pthread_create() 函数创建了 5 个线程,并接收传入的参数。每个线程打印一个 "Hello Runoob!" 消息,并输出接收的参数,然后调用 pthread_exit() 终止线程。
实例
//文件名:test.cpp#include<iostream>#include<cstdlib>#include<pthread.h>usingnamespacestd; #defineNUM_THREADS 5void *PrintHello(void *threadid){ // 对传入的参数进行强制类型转换,由无类型指针变为整形数指针,然后再读取 inttid = *((int*)threadid); cout << "Hello Runoob! 线程 ID, " << tid << endl; pthread_exit(NULL);}intmain(){ pthread_tthreads[NUM_THREADS]; intindexes[NUM_THREADS];// 用数组来保存i的值 intrc; inti; for(i=0; i < NUM_THREADS; i++ ){ cout << "main() : 创建线程, " << i << endl; indexes[i] = i; //先保存i的值 // 传入的时候必须强制转换为void* 类型,即无类型指针 rc = pthread_create(&threads[i], NULL, PrintHello, (void *)&(indexes[i])); if(rc){ cout << "Error:无法创建线程," << rc << endl; exit(-1); } } pthread_exit(NULL);}
现在编译并执行程序,将产生下列结果:
$ g++ test.cpp -lpthread -o test.o
$ ./test.o
main():创建线程,0
main():创建线程,1
HelloRunoob!线程 ID,0
main():创建线程,HelloRunoob!线程 ID,21
main():创建线程,3
HelloRunoob!线程 ID,2
main():创建线程,4
HelloRunoob!线程 ID,3
HelloRunoob!线程 ID,4