首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在线程运行时从线程中获取数据?C++

是否有可能在线程运行时从线程中获取数据?C++
EN

Stack Overflow用户
提问于 2015-11-09 05:29:45
回答 2查看 627关注 0票数 0

我有一个线程作为程序的一部分运行,我需要在整个程序期间继续运行。但是,在运行程序时,我希望能够定期显示线程上正在处理的数据(不停止)。

从概念上讲,这是可能的和/或良好做法吗?从我一直读到的关于线程的文章来看,似乎为了访问一个线程,您已经让它进入睡眠状态,查看您想要的内容,然后重新启动它。有办法“镜像”那根线吗?即使我可以这样做,这是直接访问线程的良好实践吗?还是我需要先将信息转储到数据结构中,然后再读取它?

额外信息:

我不确定这是否有区别,但我使用C++ CreateThread函数创建了一个线程。我刚刚在另一个职位上读到,该方法存在内存泄漏问题。但是,我认为我创建线程的方式改变了它正在处理的操作系统的级别,并且可能会影响我是否能够访问该线程。

谢谢您事先提出的建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-09 05:47:50

我认为sleep不是一种选择。

更好的解决方案是使用条件变量来组织阻塞队列,比如

std::thread将是多线程的好选择。

因此,有了所有这些,您的主线程可以将消息推送到队列中,然后您的子线程(即弹出消息)将使用它。

票数 0
EN

Stack Overflow用户

发布于 2015-11-09 06:31:04

您还可以在读取或写入变量之前使用mutex来保护它:查看下面的C++概念:互斥互斥类也是有价值的。

如果它只是一个计数器或一些基本类型,您也可以考虑查看一个原子性类型。

正如其他人所建议的,如果您有std::线程,请尝试使用c++11。

对于可用于将数据从一个线程发送到另一个线程的异步通知,请查看Qt库及其信号和插槽机制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33603043

复制
相关文章

相似问题

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