首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pthread_creation中的参数传递

pthread_creation中的参数传递
EN

Stack Overflow用户
提问于 2014-11-09 23:52:12
回答 1查看 49关注 0票数 1

我正在学习如何使用p线程函数。在这里,我想使用pthread_create创建一个线程,并用它计算一些数字的平均值。(数字序列末尾的0表示它已经完成)

这就是我到目前为止所写的:

代码语言:javascript
复制
#include<stdio.h>
#include<stack>
#include<pthread.h>

using namespace std;


void *Thread1(void*argument)  
{
printf("in Thread1\n");

int sum=0;
int count=0;
stack<int> numbers;
(stack<int>) numbers = *((stack<int>*) argument);
int size = numbers.size();


while(numbers.size()!=0)
{

sum=sum+numbers.top();
count=count+1;
numbers.pop();
}

int result= sum / count;
printf("Average is :");
printf("%d",result);

pthread_exit(0);

}


int main(void)
{
printf("Enter your numbers\n");

int num;
stack<int> numStack;
scanf("%d",&num);
numStack.push(num);

while( num!=0)
{
scanf("%d",&num);

numStack.push(num);
}

numStack.pop();
pthread_t myThread;
int ret;

ret=pthread_create(&myThread,NULL,Thread1,&numStack); 

if (ret<0)
   printf("Thread Creation Failed\n");


pthread_join(myThread,NULL);
return 0;
}

当我在main中得到堆栈的大小并通过打印来检查它时,它是正确的,但是当我在Thread1函数中做同样的操作时,大小是0。所以我得到了

代码语言:javascript
复制
Floating point exception (core dumped)

错误。

为什么我的堆栈的大小变成0?我该如何解决这个问题?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-10 00:09:38

代码语言:javascript
复制
(stack<int>) numbers = *((stack<int>*) argument);

cast是零大小集的根。第一个C类型转换创建一个临时的未命名对象,作为分配后消失的数字的副本。numbers从未改变过。使:

代码语言:javascript
复制
numbers = *((stack<int>*) argument);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26834734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档