在socket通訊中,服務端連接幾個客戶端,同事與幾個客戶端通訊。在接受到資料之后,進行演算法處理。在演算法中有幾個public的List和幾個變數,多執行緒會不會造成資料沖突?同時對某個共有資料進行讀寫?
我加鎖之后為什么不起作用的?

演算法耗時,一般在2-3ms就可以結束的,但是有些耗費時間太長。

上鎖方法
uj5u.com熱心網友回復:
怎么說呢,因為我們并不知道你到底要處理啥。我們只能說“隔離”,“通道”
你提問上你上一個帖子最后我們就停止回復了,因為我不想在說這個。
收是收,計算是計算,顯示是顯示,你總混在一塊說,你說我的計算,我的顯示,影響了收。
所以我們只能回復,為啥你要混在一塊。
這塊東西呢,我們還不好回復。只能給你幾個資料,看你能不能自己理解“隔離”,通道的意思
在開始的時候,我們先做一個基本的定義,先按職責鏈方式
tcpclient
.接收資料()
. 決議資料() //IO優先
. 計算資料() //cpu 優先,計算的時候俺們只計算,不要修改你那些公共變數
.顯示資料() //UI層,計算好了,就只涉及到顯示了,當然如何顯示我們不知道你的要求,我們現在mvvm 或者 rx移動視窗,他只是給控制元件的DataSource,所以本身其實也不太會用到什么公共變數,
這樣,他就“隔離”了,然后我們在用一些“并行”非阻塞,非同步方式
可能使用的東西
1.rx https://cloud.tencent.com/developer/article/1099766
2.dataflow https://www.cnblogs.com/dinggf/p/9294613.html
3.chanel https://www.cnblogs.com/tiger-wang/p/14068973.html
我們會把資料按職責鏈一級一級傳下去,但是我們不會用你用的同步lock,他們應該都是并行的,非同步的.
雖然sp1234畢竟反對用發布/訂閱方式,不過我到不反對,因為我是要解耦,同時也要降低開發難度,畢竟一個團隊,不是一個人搞,需要有些簡單點的,而且能降低技術要求的情況下,也同樣能把任務完成手段
uj5u.com熱心網友回復:
最簡單的修改就是把testObject改成靜態的成員變數。DataToCloudPoint1應該是一個可重入的方法,
在被重入時加鎖的物件如果不是全域的物件,你的lock毫無意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/239837.html
標籤:C#
