Actions
Feature #12021
openFinal instance variables
Status:
Open
Assignee:
-
Target version:
-
Description
Having a final instance variables in Ruby will allow: to construct thread-save immutable objects without additional synchronisation on instance variable reading
# Immutable and thread-safe
class TreeNode
attr :left, :right, :value, final: true
attr_reader :left, :right, :value
def initialize(left, right, value)
@left, @right, @value = left, right, value
end
end
And to fix the an issue shown in the following example:
attr :lock, final: true
def initialize
@lock = Mutex.new
# ...
end
def a_protected_method
@lock.synchronize do
# ...
end
end
The issue lies in initialization of instance variable @lock
which is not ensured to be visible in subsequent call to a_protected_method
method on a different thread.
Summary can be found in this document https://docs.google.com/document/d/1c07qfDArx0bhK9sMr24elaIUdOGudiqBhTIRALEbrYY/edit#.
The aggregating issue of this effort can be found here.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0