2

我正在尝试使用名为信号量的 POSIX 制作一个简单的读取器/写入器程序,它可以工作,但在某些系统上,它会在第一个信号量时立即停止,仅此而已......我现在真的很绝望。有人可以帮忙吗?它在我的系统上运行良好,所以我无法通过 ltrace 跟踪问题。(抱歉评论,我来自捷克共和国)

https://www.dropbox.com/s/hfcp44u2r0jd7fy/readerWriter.c

4

2 回答 2

1

POSIX 信号量不太适合应用程序代码,因为它们是可中断的。基本上,对您的流程进行任何类型的 IO 都会弄乱您的信号。请看一下这篇文章

因此,您必须非常小心地sem_正确解释函数返回的所有错误。在您发布的代码中没有这样的事情。

如果您的 POSIX 实现支持它们,只需使用 rwlocks,它们就是为此而设计的,级别更高,不会遇到那种困难。

于 2012-05-15T21:44:44.570 回答
0

在计算机科学中,读​​写器问题是并发中常见计算问题的示例。这些问题至少有三种变体,它们处理许多线程试图同时访问同一个共享内存的情况。一些线程可能读取,一些线程可能写入,其约束条件是没有进程可以访问共享以进行读取或写入,而另一个进程正在对其进行写入。(特别是,允许​​两个或多个读者同时访问共享。) 读写器锁是一种数据结构,用于解决一个或多个读写器问题。

于 2015-11-10T06:18:52.083 回答