我有一个程序可以在 MacOS 和 Linux 上运行良好,并且可以使用 mingw 交叉编译到 Windows。最近我使程序多线程。
程序的当前设计在主线程中分配内存并在从属“工作”线程中释放。这在 MacOS 和 Linux 上不是问题,因为 malloc/free 系统是多线程的。
但是,我担心交叉编译。我使用的 mingw 版本是从 MacOS 端口构建的。这是 2004 年以来非常古老的 G++ 版本(版本 3.4.5)。我尝试构建更新版本的尝试一直没有成功(我想构建一个 64 位版本,但放弃了)。我从http://sourceware.org/pthreads-win32获取 pthreads 。
我担心的是 3.4.5 中的 malloc & free 系统不是多线程的。
问题:
我应该重写我的程序,以便将要释放的内存块传递回主线程以在那里释放吗?
我应该尝试升级到更新的 mingw 吗?
除了大量的测试,还有什么办法可以找到这些并发问题吗?这对我来说感觉不太好。
谢谢!