約一次訪問從多個線程局部變量的幾個問題:C#變量線程安全
我有多個線程寫入和讀出一個變量的值,我應該同步訪問它呢?
該變量每隔幾秒從Thread1更新一次,並且它每隔幾秒從Thread2讀取並更新到數據庫。
如果我不保留任何邏輯並且沒有任何併發問題,會發生哪些問題?
我應該使用volatile嗎?
編輯:
我想強調的是,我沒有任何併發問題。這是我的具體情況:
a。我的變量的名稱是pingLatency
,它測量ping延遲
b。 Thread1發送一個ping到8.8.8.8每10秒,並寫入延遲到pingLatency
c。線程2每10秒更新一個值爲pingLatency
的校正字段。 d)。線程2每次更新同一個數據庫行。
現在,我正在使用此數據庫字段來監視網絡連接。我的問題是 - 可能會出現這樣的情況:變量未更新,或者由於線程安全問題而會拋出異常?我想避免使用lock
,因爲它看起來像是一種矯枉過正。
您認爲如何?
答案:1。 2.這取決於; 3.很多; 4:可能。您是否嘗試過搜索[so]以解決討論此問題的現有問題?這裏有很多關於線程安全的問題。 –
你的意思是「局部變量」究竟是什麼?發表一個例子。 –
我假設當你說*變量*你實際上是指*字段*,因爲一個*變量*總是*本地*,然後你將無法從多個線程訪問它。 –