首页 > 代码库 > C++ Multithread Tutorial
C++ Multithread Tutorial
---恢复内容开始---
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 = http://www.mamicode.com/( 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
---恢复内容结束---
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。