0
在我的代碼中,工作線程創建對象A,主線程B類析構函數調用工作線程的析構函數,在工作線程的析構函數中刪除對象A. 代碼如下:誰刪除在工作線程中創建的對象?
WorkerThread::foo() {
Object *p = new Object;
}
WorkerThread::~WorkerThread {
delete p;
wait();
}
B::~B() {
emit signal();
//this signal is to ask worker thread to quit,
//the signal/slot connection is connect(this, SIGNAL), mWorkerThread, SLOT));
delete mWorkerThread;
}
現在的問題是工作線程的其他功能,可以仍然使用* P(對象A)。我知道我可以在WorkerThread析構函數中添加互斥鎖。但有時我收到錯誤消息,說不應該在沒有創建它的線程中刪除對象A.這是否意味着我需要刪除工作線程中的* p?我如何使它工作?使用另一個信號和插槽?
感謝,