我可以从当前线程中保存一个值吗?

Posted

技术标签:

【中文标题】我可以从当前线程中保存一个值吗?【英文标题】:Can I save a value out of my currernt thread? 【发布时间】:2018-01-30 03:09:48 【问题描述】:

我在编写 C 程序时遇到了一些困惑。

我的场景有 2 个线程,但它们是串行运行的,所以一次只有一个线程。我想在我的第一个线程中保存一个参数,我想在我的第二个线程中获取它。 (pthread here)

那么有没有办法意识到这一点?公共静态参数在线程结束时会被回收,因为它属于当前线程。我想在当前 process 而不是线程中保存一个值或指针,以便我可以将它附加到我的下一个线程中......

有什么办法可以实现吗?

非常感谢!

【问题讨论】:

顺序运行两个线程有​​什么意义? @JonathonReinhart 这是一个特定的场景......这是一个有几个“步骤”的批处理作业。每一步都是一个线程,批处理作业只能按顺序运行。我想在我的步骤(线程)之间传输值:-) “公共静态参数”是什么意思? 如果您的场景是固定的,您可以将数据存储在任何方便的地方。您没有显示任何代码,因此我们无法判断您是在主线程中创建、加入、创建、加入,还是创建、创建、加入、加入或其他。我们不知道线程 2 是如何知道它何时可以运行的。但是您的同步问题非常有限;使用传递给线程函数的指针或文件范围变量,甚至全局变量应该很容易管理。 @Jiddu.K 但如果它是顺序的,为什么还要麻烦线程呢?为什么不按顺序执行所有步骤? 【参考方案1】:

线程共享内存。使用一个变量(全局的、创建线程的本地变量或堆中的变量)并将指针传递给指向该变量的两个线程。

【讨论】:

以上是关于我可以从当前线程中保存一个值吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以根据另一个 NSUserDefault 值保存 NSUserDefault 值吗?

我可以让 model.save() 有一个返回值吗?

可以在 C++11 中检索线程函数的返回值吗?

JQuery可以获取从另一个页面传过来的值吗

我可以保存文本框的值吗? [复制]

For 循环可以“看到”当前迭代中即将出现的值吗?