gpt4 book ai didi

c - 将局部变量传递给线程。是否可以?

转载 作者:太空狗 更新时间:2023-10-29 15:46:07 30 4
gpt4 key购买 nike

我正在研究 gcc,我想知道这是否可能:

我有一个函数(不是main,而是aLocalFn),我在其中声明了一个局部变量。然后我将这个本地参数作为线程参数传递。可行吗?或者有可能(取决于首先运行的是什么)aLocalVar 将在 threadFunction 运行之前丢失并且引用 idxPtr 将指向无意义??

int *threadFunction(void *idxPtr){
int rec_idx=(int) *idxPtr;

//work in the thread with this variabel rec_idx
}

int aLocalFn(){
int aLocalVar=returnsRecordIndex();

pthread_create(&thread_id,&attr_detached,threadFunction, &aLocalVar)!=0)
return 0;
}

谢谢你的帮助

最佳答案

此代码不正确。函数 aLocalFn 可能会在线程函数开始执行之前返回。因此,当线程函数读取局部变量时,该变量的范围可能已经结束。

令人困惑的是这段代码可能看起来很有效,至少在某些时候是这样。但是,这是不正确的,您应该改用堆分配的内存。

关于c - 将局部变量传递给线程。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10682879/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com