1

我想我有点筋疲力尽了,所以如果这是一个愚蠢的问题,我深表歉意。假设我有以下代码:

    public void updatePrices()
    {
        synchronized (singleton_price_db)
        {

            singleton_price_db.modifyPrices();

            singleton_propagator.propagatePricesToOtherServers();
        }
    }

现在,当执行线程运行此代码时,它将锁定价格数据库(singleton_price_db),然后提醒单例文件传播器将更新的价格传播到其他服务器。但是,当单例传播器正在运行时,我将不再拥有同步锁,对吗?如何处理?(我需要同步 RAM 上的修改价格,因为它正在传播到其他服务器。我不能让执行线程调用propagatePricesToOtherServers() 方法,因为这会导致许多其他同步问题。)

编辑:我可以进一步详细说明我想要做的事情,但是使用我的设计可能不存在解决方案。本质上,我有两个线程需要围绕数据结构有一个同步块。当第一个线程完成其任务时,它需要将同步块传递给传播者线程(第二个),而没有机会从任何其他线程进行修改。如果不添加大量额外的机器,比如上层的管理器线程,我看不到立即的解决方案,所以这可能是处理这个问题的方法。

4

0 回答 0