我有一系列 c++ 批处理程序,它们同时运行并使用共享内存在它们之间传递数据。这些程序是为 Windows 和 UNIX 构建的,每个程序都使用信号量、互斥锁等适当的代码。
共享内存代码/库是多年前由一位顾问编写的,多年来一直完美无缺。
今年我们将编译器/操作系统升级到 VS2010 for windows 和 AIX 7。以前我们必须处理 10 多年前的编译器。
一切仍然有效,但我们遇到了严重的性能问题。在记录中,我已经缩小到发生延迟的地方。
对于 Windows,当我们执行 WaitForSingleObject(m_HANDLE, INFINITE); 对于 UNIX,当我们执行 semop(m_HANDLE,&sb,1);
我正在阅读这种类型的原始编码,而且进展缓慢。
我的问题是,有没有人知道现代操作系统和/或编译器会导致这种类型的编程比旧操作系统/编译器运行得慢的任何事情?