【发布时间】:2011-04-19 15:03:21
【问题描述】:
这是我遇到的问题:
主线程创建类对象(mybaseclass* local = new childclass;),这些对象本质上是知道它们应该做什么的命令。然后它将指向类对象的指针通过套接字传递给分叉线程,然后主线程处理完该对象并返回等待其他一些输入。分叉的线程然后从队列中读取指针,但是当主线程完成时,指针指向的类对象已经被自动删除。主线程执行完毕后,如何让类对象持久化?
谢谢! 杰夫
【问题讨论】:
-
在堆上手动分配的对象(即
new)不会自动删除... -
没有定义主线程结束后发生的事情(因为 C++ 没有线程)。但是在大多数系统中,一旦主线程退出,所有其他线程都会因极端偏见而被杀死(它们不会继续运行)。因此,您的主线程应该等待所有其他线程完成后再离开 main()。
-
重新阅读你的解释不清楚你是否真的在使用线程。从您使用
forked、spawned的词以及您通过套接字传递对象的事实来看。它表明您正在使用多个进程。进程不共享内存,因此传递指针是徒劳的。 -
像往常一样,如果您发布代码而不是英文描述,这将更容易解决。
标签: c++ multithreading class pointers object