私はスレッドセーフなアクセスにはcount
プロパティが必要です。このスレッドセーフな並行アクセスですか?
sync.Mutex
またはsync.RWMutex
とすることができます。しかし、私はこのように大丈夫だとは分かりません:
type Status struct {
count uint32
attr1 string
attr2 string
}
func (s *Status) Get() uint32 {
return atomic.LoadUint32(&s.count)
}
func (s *Status) Add(n uint32) {
atomic.AddUint32(&s.count, n)
}
func (s *Status) Reset(n uint32) {
atomic.StoreUint32(&s.count, n)
}
ありがとう。
編集:
私がアクセスフィールドが直接s.count
安全ではないことを混乱しています。しかしatomic.LoadUint32(&s.count)
は安全ですか?
任意の言語で任意のフィールドにアクセスすることは安全ではありません彼らのタイプのシステムPonyのように、またはRustのようないくつかの言語は、「提供する」とは並行アクセスを安全にすることを意味します。したがって、通常の/メインストリームのプログラミング言語を使用する場合は、常に安全であるとみなす必要があります。 –