ubuntu 下的C++多线程遇到的问题(2)--向线程传递参数
来源:互联网 发布:精密仪器编程 编辑:程序博客网 时间:2024/06/05 18:17
#include <iostream>#include <cstdlib>#include<pthread.h>using namespace std;#define NUM_THREADS 5void* say_hello(void *args){ int ii=*((int *)args); cout<<"Hello Runoob!线程id"<<ii<<endl; pthread_exit(NULL);}int main(){ pthread_t tids[NUM_THREADS]; int indexes[NUM_THREADS]; for(int i=0;i<NUM_THREADS;i++) { //cout<<"main()创建线程,"<<i<<endl; indexes[i]=i; int ret=pthread_create(&tids[i],NULL,say_hello,(void*)&i); if(ret !=0) { cout<<"pthread_cread error:error_code"<<ret<<endl; exit(-1); } } pthread_exit(NULL); //cout << "Hello World!" << endl; return 0;}
创建的线程id总是有时候会一样,后来对照教程一个一个看过去,也没找到不同之处,百度之,但是关键词真不知道(也没找到合想的),继续找不同,发现在
int ret=pthread_create(&tids[i],NULL,say_hello,(void*)&i);而教程里是(void *)&indexes[i].最后试了下,发现数组才能很好保存,让每个线程id不一样.
最后,再次百度之,发现一个很好的关键词:向多线程传递参数. 在一篇博客上找到解释:
"在用传递指针或传递引用的方式时,要注意参数的作用域问题,保证被调函数返回前:1)变量地址不变,变量值不变".那篇博客用vector保存局部变量,可惜因为是动态开辟内存的,因此需要提前分配内存就行
阅读全文
0 0
- ubuntu 下的C++多线程遇到的问题(2)--向线程传递参数
- 向线程传递多个参数的变通方法(c#)
- ubuntu 下向Bitbucket上传代码遇到的问题
- 向用户控件传递参数的问题
- 向用户控件传递参数的问题
- 利用out关键字向函数传递List<T>参数遇到的问题
- Ajax请求传递参数遇到的问题
- Java多线程:向线程传递数据的三种方法
- java向多线程中传递参数的三种方法
- java向线程中传递参数的方法
- java向线程中传递参数的方法
- C#中向线程传递参数的方法
- 向线程传递参数的两种基本方法
- 多线程的参数传递
- c# 多线程的使用-为线程传递参数
- C++11多线程学习---线程函数的参数传递
- Linux多线程编程之线程之间的参数传递
- 关于向方法中传递参数的问题
- matlab2c使用c++实现matlab函数系列教程-eye函数
- Java I/O 流
- 1.如何选取版本进行研究
- 机器学习——支持向量机SVM(Support Vector Machine)(上)
- 学习日记
- ubuntu 下的C++多线程遇到的问题(2)--向线程传递参数
- Unable to load annotation processor factory
- umeng(友盟)实现第三方登录和分享详解之登录详解
- 【NOIP2017提高A组模拟8.24】提米树
- 计算该天是一年中的第几天
- 链表\共用体
- 2017 Multi-University Training Contest 10 1010 Schedule HDU 6180 (贪心)
- 我渴望做一只打不倒的小强
- 《深入理解mybatis原理》 MyBatis的二级缓存的设计原理