提升信号量异常
我们正在开发一组应用程序和一些用于通用功能的共享库。 在其中一个库中,我们使用 Boost Interprocess 信号量进行线程同步。
问题是,在一个应用程序中,Boost 进程间信号量工作正常,但在另一个应用程序中,它们会抛出异常(what():函数未实现;errno:ENOSYS)。 这两个应用程序之间的主要区别在于,失败的应用程序具有基于 Qt 的 GUI,而另一个应用程序没有 UI。
两个应用程序都(动态)与 librt.so.1 和 libpthread.so.0 链接 这已经在 Fedora 14 上进行了测试,内核为 2.6.35.6-45.fc14.i686。
ENOSYS 的常见原因似乎并不适用,因为它适用于一个应用程序,但不适用于另一个应用程序,而这两个应用程序都在同一系统上运行。
我们正在使用 boost::interprocess::interprocess_semaphore.timed_wait() 函数。
We are developing a set of applications and some shared libraries for common functionality.
In one of the libraries, we use Boost Interprocess semaphores for thread synchronization.
The problem is that, in one application the Boost Interprocess semaphores work fine, but in another application they throw an exception (what(): Function not implemented; errno: ENOSYS).
The main difference between the two applications is that the failing application has a Qt-based GUI, while the other application does not have a UI.
Both applications are (dynamically) linked with librt.so.1 and libpthread.so.0
This has been tested on Fedora 14, with kernel 2.6.35.6-45.fc14.i686.
The usual reasons for ENOSYS do not seem to apply, because it works with one application, but not with the other while both applications run on the same system.
We are using the boost::interprocess::interprocess_semaphore.timed_wait()
function.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论