社区
Qt
帖子详情
qt 线程 的问题
fight_flight
2010-09-29 10:57:16
线程类中重载的run函数运行结束后,是不是线程占据的内存资源会自动返还系统
...全文
244
10
打赏
收藏
qt 线程 的问题
线程类中重载的run函数运行结束后,是不是线程占据的内存资源会自动返还系统
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
swift19221
2011-08-30
打赏
举报
回复
一群菜鸟,
线程管理类和线程都没有分清楚!
还记得MFC的类吗? 与此类似。
一个MFC的类可能管理了一个GUI资源,比如窗口
当这个类析构的时候,被管理的GUI资源也会被删除,
除非在析构前调用了 detach(),
线程管理类就像MFC的类, 线程就像受MFC类管理的GUI资源
fight_flight
2010-10-11
打赏
举报
回复
这个线程里有使用界面一个控件的指针显示信息,当我把相应的语句屏蔽之后内存就不会增加了。这种情况要怎样就觉呢?是不是涉及资源的互斥呢?
mujianhua1982
2010-10-10
打赏
举报
回复
学习了!!!!!!
dbzhang800
2010-10-09
打赏
举报
回复
[Quote=引用 6 楼 zecard_fu 的回复:]
引用 2 楼 qqyanchong 的回复:
run结束后线程的资源不会自动全部释放,因为现在只是结束了run整个的线程还是存在的,因而要释放必须完全的删除你的线程类才可以
存在吗? 我用命令 pstree 怎么发现不存在了?
[/Quote]
恩,不存在。Qt Manual中说:
The run() implementation is for a thread what the main() entry point is for the application. All code executed in a call stack that starts in the run() function is executed by the new thread, and the thread finishes when the function returns.
zecard_fu
2010-10-09
打赏
举报
回复
[Quote=引用 2 楼 qqyanchong 的回复:]
run结束后线程的资源不会自动全部释放,因为现在只是结束了run整个的线程还是存在的,因而要释放必须完全的删除你的线程类才可以
[/Quote]
存在吗? 我用命令 pstree 怎么发现不存在了?
khler
2010-10-02
打赏
举报
回复
不能简单的从观察系统的内存增减来判断程序是否内存泄露。
从你对fun1与fun2的描述来看,不存在内存泄漏问题,除非里面还有其他对内存的操作。
fight_flight
2010-09-30
打赏
举报
回复
[Quote=引用 2 楼 qqyanchong 的回复:]
run结束后线程的资源不会自动全部释放,因为现在只是结束了run整个的线程还是存在的,因而要释放必须完全的删除你的线程类才可以
[/Quote]
使用时new,用完后delete 吗?
是这样的,我在一个函数(fun1)中new一个线程并start它,线程运行一个socket客户端与服务端相连的代码,很快就执行完了。然后另一个函数(fun2)使其与服务端断开并delete这个线程。执行fun1时内存会相应增加,运行fun2时内存并没有相应减少。这是什么原因?
ljz0919
2010-09-30
打赏
举报
回复
发一点我自己用到的代码,看能否对你有帮助
DownProcThread::~DownProcThread()
{
mutex.lock();
abort = true;
condition.wakeOne();
mutex.unlock();
wait();
}
void DownProcThread::run()
{
forever{
// QMutexLocker locker(mutex);
mutex.lock();
//在此处理收到的报文,并发送报文。
if (abort)
return;
//emit txrxcmd(this->message());
emit begin485();
this->sleep(1);
mutex.unlock();
}
}
yanchong
2010-09-30
打赏
举报
回复
run结束后线程的资源不会自动全部释放,因为现在只是结束了run整个的线程还是存在的,因而要释放必须完全的删除你的线程类才可以
dext
2010-09-29
打赏
举报
回复
本质上还是和一般的方法一样吧。栈上的 就“返还”了,堆上的要自己释放吧。
QT
多
线程
—主界面卡死解决方案
在
QT
中,可以使用`
Qt
::QueuedConnection`类型的信号槽连接,这将确保槽函数在接收信号的
线程
上下文中执行,防止数据竞争和
线程
安全
问题
。 总结一下,
QT
多
线程
解决方案的核心是将耗时任务移到工作
线程
中执行,同时...
Qt
入门中文资料
Qt
从入门到精通
**多
线程
编程**:利用
Qt
的
QT
hread类,可以轻松地实现多
线程
任务,如异步数据处理、后台下载等,避免界面阻塞,提高应用响应性。 **网络编程**:
Qt
的网络模块提供了HTTP、FTP、WebSocket等多种协议的支持,使开发者...
Qt
5.9 C++开发指南.pdf 及示例源码
**
Qt
5.9 C++开发指南**
Qt
是一个跨平台的应用程序开发框架,广泛用于创建桌面、移动和嵌入式应用程序。在
Qt
5.9版本中,它提供了许多增强的功能和改进,使得C++开发者能够更加高效地构建用户界面和应用程序。本指南...
Qt
一去丶二三里 Blog(二)
同时,
Qt
的国际化和本地化功能使得开发全球化应用变得简单,
QT
ranslator和QLocale类帮助开发者轻松处理不同语言和文化的显示
问题
。 总而言之,这篇“
Qt
一去丶二三里 Blog(二)”的PDF文档可能涵盖了
Qt
库的多个...
Qt
5类继承关系图
10.
Qt
多
线程
和数据处理 - 包括QMutex、QWaitCondition、QAtomicInt等同步和并发控制类。 - 提供了QScopedPointer、QSharedDataPointer等用于智能指针管理的类。 理解这些类和模块的继承关系,有助于开发者在使用...
Qt
16,824
社区成员
26,686
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章