2012-10-20 42 views
1

假設我有一個對象,其成員想在兩個單獨的任務中使用。最好的方法是什麼?由於結構是按值傳遞的,因此我應該將對象更改爲結構,然後創建對象的兩個單獨副本,並將其傳遞給兩個任務?另外,因爲對象的屬性來自數據庫,我想我可以在每個任務中創建實例。我應該在任務內還是外創建對象?

哪種方法最有效?

+2

閱讀或寫入權限? –

+0

閱讀。這將只顯示數據。 – user609926

+0

然後它本質上是線程安全的。 –

回答

3

正如在OP的評論暗示的亨克...

如果使用的是專爲參考對象的屬性,有一個與一次實例化對象並將其傳遞到多個任務沒有問題,但是,如果任務將要改變對象的屬性,則需要處理所有通常的多線程問題。

此外,由於您提到這些對象表示Db記錄,所以我想你會從ORM中獲取它們。如果您使用實體框架,它創建的代理類肯定是而不是更改屬性時是線程安全的。

所以真的,這取決於你的用法我會試圖在每個任務中完成所有任務,這樣任務是一個獨立的單元,後來改變了開發人員不知道這個限制的工作,不會導致意想不到的競賽狀況。 (假設你不處理大量的實體和內存使用情況不是一個問題)

+0

不會對基礎數據執行任何操作,僅用於顯示目的。我沒有使用實體框架,但由於我沒有改變任何東西,我想這沒關係。當前的代碼正在實例化一次並傳遞給兩個任務,所以我想我已經設置好了。謝謝! – user609926

0

如果對象在任務之間是獨立的,它應該是值。如果一個對象被兩個任務使用,則應該有一個對象。如果對象是獨立的(克隆2個對象),克隆對象然後傳遞給任務。我不會使用結構。

相關問題