跨线程释放内存

tay*_*10r 3 c pthreads dynamic-memory-allocation

跨线程释放内存是不好的做法?这样一个线程分配内存,并在退出后,将指针传递给主线程以释放内存.我觉得答案是肯定的,但我只是想知道.

我的代码中的目的是为了让主线程在释放之前可以对内存做一些其他的事情.在我的情况下,有很多变通办法,我使用它完全没问题.但是,在我的情况下,让一个线程返回void*到一块内存可以使代码非常方便.

编辑:我知道这样做没有技术故障.

Jon*_*ler 8

一个线程传递它已分配给另一个线程的内存控制并没有错.例如,在生产者/消费者模型中,生产者线程为其生成的任何内容分配内存是非常合理的,然后将该内存的控制权交给消费者线程以供消费者线程使用和释放.

  • 将207k视为痴呆症的一种症状 - 对SO的精神上瘾. (5认同)

R..*_*R.. 6

只要它对您的数据流模型有意义,特别是对您的程序对对象生命周期的要求有意义,这并不是“不好的做法”,但它可能会产生成本。许多现代分配器使用线程本地竞技场,其中在同一线程中分配和释放对象不会导致同步损失,但在不同线程中释放它会强制同步或产生其他成本。我不会因此而改变您的设计,除非它是一个主要瓶颈,但考虑到这个实现细节,您还可以考虑其他设计,例如让线程将其输出存储在父线程在参数中提供的缓冲区中线程启动函数。