2016-04-28 83 views
2

我有一個類在Swift中訪問不同的成員線程安全嗎?

class Foo { 
    var bar : Int 
    var baz : Int 
} 

我有兩個線程其中兩個具有與本類的相同對象的引用。然而,他們正在訪問此類別的不同成員

  • 線程1正在讀取和寫入。
  • 線程2讀取和寫入巴茲。

這是線程安全的?

我的假設,它是,因爲這兩個成員是不同的對象。但是,我想仔細檢查(考慮到我仍然有限的Swift知識)。

回答

1

是的,如果一個線程與一個屬性進行交互,並與其他財產彼此互動,你真的有什麼與這兩個屬性相互作用,那麼你很可能會確定。

誠然,這感覺就像一個低cohesion溶液(應該這兩個屬性確實是同一類的屬性?)。此外,它看起來有點脆弱(取決於與這個對象交互的其他對象是否符合這個線程完整性的劃分),但從技術上講它可以工作。

如果你可以給我們您打算如何使用這個實際的,現實世界的例子,我們也許能夠提供更具體的諮詢。

+1

是的。它感覺很脆弱(改變一些代碼會很容易就會開始與其他成員進行交互)。 –

+0

這也是一個可能的性能問題。我不太瞭解swift數據佈局,但如果這兩個變量最終在同一個緩存行中,那麼您的兩個線程將爭奪所有權(也稱爲虛假共享) – Bahbar

相關問題