我有一个高度多线程的Ruby应用程序,其中共享了几个实例变量。对这些变量的写入很少(1%),而读取非常常见(99%)。在您的意见或典型的Ruby方式中,确保这些线程始终看到涉及最新值的最佳方法是什么?以下是我目前想到的一些想法(但在进行全面更新之前,我想听听您的意见):
- 在读取或写入任何这些变量之前必须使用锁定(来自Java Concurrency in Practice)。这种方法的缺点是,在我的代码中会放置大量的
synchronize
块,并且我看不到避免它的简单方法。 - 使用Ruby的
freeze
方法(请参见此处),虽然它看起来同样麻烦,并且不提供第一种选项所提供的任何同步优势。