当前位置: 首页 > 知识库问答 >
问题:

同步读取器和写入器

吴西岭
2023-03-14

如何写这个问题?老实说,我不明白这个问题的意思。A) 编写读者和作者优先于读者的解决方案,并评论每个信号量的功能。(记住变量和信号量的定义和初始化)B)读卡器的优先级意味着什么?当一个作家在写作时,到达的读者会发生什么?当编写器结束其操作时会发生什么?

共有1个答案

夹谷衡
2023-03-14

我猜制约因素如下:

  1. 多个读卡器可以同时阅读

要解决这个问题,您需要有一个等待读卡器队列、一个等待写卡器队列、当前读卡器计数和布尔变量来指示是否有写卡器。更好的是,如果你有条件变量,可以使用条件变量来解决这个问题。

读者优先意味着作者只有在没有当前或等待的读者的情况下才能写作。

当有当前作者时到达的读者会排队。

当编写器完成时,如果有任何等待,则读者开始阅读。否则,下一个编写器将启动。

 类似资料:
  • 我对同步块有一些疑问。在提问之前,我想分享另一个相关帖子链接的答案,以回答相关问题。我引用彼得·劳里的同一个答案。 > <块引号> 同步确保您对数据有一致的视图。这意味着您将读取最新值,其他缓存将获得最新值。缓存足够智能,可以通过特殊总线相互通信(JLS不需要,但允许)该总线意味着它不必触摸主存储器即可获得一致的视图。 如果您只使用同步,则不需要Volatile。如果您有一个非常简单的操作,而同步

  • 项目读取器将数据从特定源代码读入Spring批处理应用程序,而项目写入器将数据从Spring Batch应用程序写入特定目标。 Item处理器是一个包含处理代码的类,该代码处理读入spring批处理的数据。 如果应用程序读取条记录,则处理器中的代码将在每条记录上执行。 块(chunk)是该tasklet的子元素。 它用于执行读取,写入和处理操作。 可以在如下所示的步骤中配置使用此元素的读取器,写入

  • 问题内容: 回答 根据接受的答案代码,对该代码进行以下调整对我有用: 编辑 我已将问题更新为可以正确循环的版本,但是随着应用程序的扩展,能够并行处理非常重要,而且我仍然不知道如何在运行时使用javaconfig动态地执行此操作… 改进的问题: 如何在运行时 针对5种不同情况 动态创建读取器-处理器-写入器 (5个查询意味着按现在配置的5个循环)? 我的LoopDecider看起来像这样: 基于查询

  • 问题内容: 我对同步块几乎没有疑问。 1. > 同步可确保您拥有一致的数据视图。这意味着您将读取最新值,而其他缓存将获得最新值。高速缓存足够智能,可以通过特殊总线相互通信(这不是JLS所必需的,但允许)。该总线意味着不必触摸主内存即可获得一致的视图。 如果仅使用同步,则不需要volatile。如果您有一个非常简单的操作(对于同步操作可能会过分杀伤),则波动性很有用。 参考上面,我有以下三个问题:

  • 根据已接受的答案代码,对该代码的以下调整对我起作用: 我已经将这个问题更新到了一个可以正确循环的版本,但是由于应用程序将扩展,能够处理并行是很重要的,我仍然不知道如何在运行时用javaconfig动态地做到这一点... 基于查询列表(HQL查询),我希望每个查询都有一个读取器-处理器-写入器。我当前的配置如下所示: 工单 处理机 作家 目前,该过程对于单个查询来说工作得很好。然而,我实际上有一个查

  • 我有一个场景,服务器端将接收请求并并发运行作业(不同的作业名或相同的作业名具有不同的jobparameters)。它的用法是在并发线程中新建一个作业对象(包括steps/reader/writer),所以我不打算每次将作业方法声明为@bean并新建一个作业。 实际上,在如何将参数传输到像Reader这样的对象上存在差异。如果使用@bean,必须将参数放入例如JobParameters中,以便使用@