虽然在SO中已经以不同的方式提出了这个问题,但我会从pthreads的角度以不同的方式询问它以了解提供同步的工具。
我们知道每个线程都有自己的线程堆栈,但共享堆和全局数据。当堆共享时,我很困惑如何以及提供哪种同步工具来保护完整堆?
答案 0 :(得分:1)
有两种可能性 - 系统提供的用于处理堆的函数(malloc
,free
等)是线程安全的,或者它们不是。
如果是,没问题 - 你不需要做任何事情。
如果不是,则需要为要使用的每个函数编写一个包装函数并进行适当的锁定。 pthread_mutex_*
电话看起来对我来说很合适。