线程删掉对象时,对象的析构里又要删线程,析构时还要wait线程结束才行,要正常运行,要用好多标志来控件,真麻烦
不知大家遇到这个问题是如何处理的
在外面用一个专门的类来管理创建出来的这些对象吗。。。只是在什么时候来删除这些线程已结束的对象是个麻烦事
10 个解决方案
#1
我习惯用一个类来包装一个线程,而且一个类仅可产生一个线程,这样的好处是:这个线程所使用的数据都是独立的。。。
可以创建多个对象,就样就形成安全的多线程
只是一直没找到在哪种情况下来删除这个类的好方法
可以创建多个对象,就样就形成安全的多线程
只是一直没找到在哪种情况下来删除这个类的好方法
#2
upup
#3
效率不高啊!这样
#4
??????
#5
引用计数不知道可不可行。
#6
要线程结束的话, 无非和线程间的通信相关. 线程间的通信无非4种,全局变量(或静态变量), 写文本 , 数据库, 还有就是线程间的消息通信, 最后一种是最好的, 活用的话会发现它无论是效率还是功能都是最好的, 但相对技术要就高些, 不知道你用过没有. 你现在用的应该是全局变量这种, 所以你看, 就是这四种, 你用的方法也没有什么不可以的啊, 挺好的啊, 不过我建议用第四种, 很好的, 你有三星, 水平应该不错, 相信学习一下就可以了.
#7
错了,你没理解我的意思,我是:要在线程中删除包裹它的对象,你可能没这样设计过,没什么体会:)
偶现在是用一个全局list来保存这些对象,线程结束时并不删除对象,这些对象的删除是在idle消息中来访问list,找到没工作的对象,然后删除
偶现在是用一个全局list来保存这些对象,线程结束时并不删除对象,这些对象的删除是在idle消息中来访问list,找到没工作的对象,然后删除
#8
要删掉这个对象
线程删掉对象时,对象的析构里又要删线程,析构时还要wait线程结束才行,要正常运行,要用好多标志来控件
没有那么复杂吧
按照你上面的说法上面就是一个死锁!!
你无非是想在析构里面CloseHandle(hThread)是吗?
你可以在成员函数StartThread里面在创建完线程后立即关闭,这样就不同在析构里面再CloseHandle了而且也不影响程序的运行!
然后再Run结束的时候delete this就可以了
再析构里面释放一些资源
线程删掉对象时,对象的析构里又要删线程,析构时还要wait线程结束才行,要正常运行,要用好多标志来控件
没有那么复杂吧
按照你上面的说法上面就是一个死锁!!
你无非是想在析构里面CloseHandle(hThread)是吗?
你可以在成员函数StartThread里面在创建完线程后立即关闭,这样就不同在析构里面再CloseHandle了而且也不影响程序的运行!
然后再Run结束的时候delete this就可以了
再析构里面释放一些资源
#9
你可以把你这个对象写成一个线程对象,在Run()里面在循环接收消息,接收到后就直接退出线程,这样对象的析构也就自动完成,不用等待。
#10
gz
#1
我习惯用一个类来包装一个线程,而且一个类仅可产生一个线程,这样的好处是:这个线程所使用的数据都是独立的。。。
可以创建多个对象,就样就形成安全的多线程
只是一直没找到在哪种情况下来删除这个类的好方法
可以创建多个对象,就样就形成安全的多线程
只是一直没找到在哪种情况下来删除这个类的好方法
#2
upup
#3
效率不高啊!这样
#4
??????
#5
引用计数不知道可不可行。
#6
要线程结束的话, 无非和线程间的通信相关. 线程间的通信无非4种,全局变量(或静态变量), 写文本 , 数据库, 还有就是线程间的消息通信, 最后一种是最好的, 活用的话会发现它无论是效率还是功能都是最好的, 但相对技术要就高些, 不知道你用过没有. 你现在用的应该是全局变量这种, 所以你看, 就是这四种, 你用的方法也没有什么不可以的啊, 挺好的啊, 不过我建议用第四种, 很好的, 你有三星, 水平应该不错, 相信学习一下就可以了.
#7
错了,你没理解我的意思,我是:要在线程中删除包裹它的对象,你可能没这样设计过,没什么体会:)
偶现在是用一个全局list来保存这些对象,线程结束时并不删除对象,这些对象的删除是在idle消息中来访问list,找到没工作的对象,然后删除
偶现在是用一个全局list来保存这些对象,线程结束时并不删除对象,这些对象的删除是在idle消息中来访问list,找到没工作的对象,然后删除
#8
要删掉这个对象
线程删掉对象时,对象的析构里又要删线程,析构时还要wait线程结束才行,要正常运行,要用好多标志来控件
没有那么复杂吧
按照你上面的说法上面就是一个死锁!!
你无非是想在析构里面CloseHandle(hThread)是吗?
你可以在成员函数StartThread里面在创建完线程后立即关闭,这样就不同在析构里面再CloseHandle了而且也不影响程序的运行!
然后再Run结束的时候delete this就可以了
再析构里面释放一些资源
线程删掉对象时,对象的析构里又要删线程,析构时还要wait线程结束才行,要正常运行,要用好多标志来控件
没有那么复杂吧
按照你上面的说法上面就是一个死锁!!
你无非是想在析构里面CloseHandle(hThread)是吗?
你可以在成员函数StartThread里面在创建完线程后立即关闭,这样就不同在析构里面再CloseHandle了而且也不影响程序的运行!
然后再Run结束的时候delete this就可以了
再析构里面释放一些资源
#9
你可以把你这个对象写成一个线程对象,在Run()里面在循环接收消息,接收到后就直接退出线程,这样对象的析构也就自动完成,不用等待。
#10
gz