1樓:它聞定
開2個執行緒, 乙個執行緒監聽,另乙個做非同步接收的監控。
12個執行緒效率低了些, 接收執行緒大部分時間都是在睡眠狀態。
另外,這種長時間工作的任務不能放到執行緒池中,會耗盡。net系統資源。
c# socket多執行緒接收資料,然後多執行緒處理資料 與 單一執行緒處理所有多執行緒接收的資料相比 哪個效率更高
2樓:網友
多執行緒並不能提高執行效率,相反,由於多了執行緒切換,會有一丁點額外開銷多執行緒能提高互動和響應效率。
原因是cpu只能一條一條指令的做。
如果是多核程式設計或多處理器程式設計,那就肯定能快了。
c# **程中接收到的資料,我要根據資料內容進行處理,請問應該使用什麼方法?
3樓:網友
啟動乙個執行緒進行監聽客戶端連線,每連線上乙個則為該連線專門新建乙個執行緒進行接收資料,資料接收到之後將資料解析後,根據不同情況再進行處理,需要主窗體進行顯示處理的話,這時可以通過委託非同步begininvoke交給主執行緒進行處理,這時主要做一些介面顯示工作,如果不需要直接在接收執行緒裡傳送資料就好了。
4樓:網友
這明顯要用非同步來處理。具體的說不清楚,非同步就是更牛逼一點的類似於執行緒的東西。
c#如何處理在輔助執行緒裡面接收到的資料呢?
5樓:網友
如果只是顯示資料, 可以在 datareceived 裡呼叫下面的方法:
string strread= ;
showinfo(strread);
private void showinfo(string msg)else}
c# 多執行緒 大量資料即時接收\解析\儲存 問題
6樓:網友
1、定義兩個執行緒安全的佇列(跟b,其中a用於儲存接受的資料,b用於儲存要持久化的資料。
2、執行緒a迴圈讀取資料並儲存到佇列a中。
3、執行緒b迴圈從佇列a中讀取資料。
如果讀取到資料。
將解析前的資料跟解析後的資料賦值給專門儲存它們的類c。
將類c新增到佇列b中。
將解析後的資料顯示到ui執行緒中。
如果沒有讀取到資料,則sleep一定時間。
4、執行緒c迴圈從佇列b中讀取資料。
如果讀取到資料,則儲存資料。
如果沒有讀取到資料,則sleep一定時間。
5、執行緒d可以不要,不過假設資料的處理時間過長,將導致佇列長度不斷增長,所以執行緒d可以迴圈判斷佇列a跟佇列b的長度。假設佇列中的物件數量超過特定閥值,則進行一定處理。比如終止程式,比如跳過部分資料,比如停止接收資料等。
7樓:網友
不明白你要解決什麼問題。。。
只是儲存執行緒只有乙個的話,貌似是不夠的,而且資料庫很有可能是乙個瓶頸。
c#多執行緒同用乙個全域性變數,如何保持每個執行緒的變數不會被別的執行緒把值覆蓋掉
8樓:網友
1、我們在程式頂部寫上執行緒的引入名稱空間。
2、然後我們就可以正常建立執行緒等版操作權。
3、接著就可以判斷狀態,只有執行緒在執行才開始。
4、然後就可以判斷執行緒暫停的時間。
5、接著就可以利用執行緒的about方法進行終止。
6、並給出相應的是即可成功終止執行緒。
9樓:
如果是全域性bai
變數,而各個執行緒又都du要能讀寫,而zhi且不能被別的執行緒覆蓋dao掉,那隻能是加專鎖,lock(全域性變屬量)
但是這樣會影響多執行緒的併發,如果是私有變數就不存在這個問題了,得看你具體要求做什麼了。
10樓:網友
1. 可以在類裡面宣告乙個靜。
du態的全zhi
局變數。public static object obj=引用型別dao;
2.在每個方。
法體內,宣告各自內的區域性變數容。
3.加上lock鎖,可以確保當前執行緒操作的時候,別的執行緒無法操作。
11樓:網友
把變數宣告在各自的執行緒函式中就可以了。
如果是全域性變數,各個執行緒都會去讀寫的,怎麼能保證不會被覆蓋呢。
如果只在初始化時被賦值,以後不可能會去寫的欄位話,可以使用readonly標記。
12樓:網友
覆蓋,那為什麼還用全域性變數?lock可以鎖定,且僅限於引用型別的物件,但是要不能覆蓋,不太清楚你想幹嘛的。
在c#主執行緒拿到資料,在定時器中處理這些資料,涉及到執行緒見資訊呼叫,怎麼做?呢。
13樓:網友
用lock把執行緒的呼叫的**給鎖了。
14樓:包布丁
如果是窗體設計器,即裡面的timer,直接呼叫即可,它是執行緒安全的。當然它會有誤差。
其它名稱空間下的計時器不是執行緒安全的,如果你要訪問窗體執行緒,則需要呼叫窗體的invoke或begininvoke方法,把需要執行的委託作為引數傳遞即可。
inovke和begininvoke的區別在於,乙個是同步,而另乙個是非同步的。使用invoke,計時器執行緒會等待窗體執行緒委託執行完畢,再執行下面的**;而begininvoke不會等待窗體執行緒,直接執行下面的**。
主機12V直流供電,能否直接用個12v蓄電池並聯作為不間斷供
路西法 可以這樣做。不能把電瓶弄壞,因為介面卡輸出電壓最大也就是12伏 13伏,這個電壓小於電瓶充滿的電壓15伏。就是說用這個介面卡單獨給電瓶充電都不能充滿。如果打算製作的話應該加一個斷電警示燈,一旦220伏停電它可以亮起,提醒你現在處於蓄電池供電,以便掌握電瓶電量是不是夠用。主機12v直流供電,能...
增駕C1E實習期內扣滿12分,但是是在兩個記分週期內的,會被登出嗎
增駕c1實習期滿分被登出,但是在兩個記分週期 增駕c1實習期滿分被登出,但是在兩個記分週期,原e照目前還有六分,駕照初次領證日期為2010.11.15 增駕c1為2015.3.31 2016.3.30為實習期,在次期間扣了12分但是在兩個記分週期,相當於11.15日前後各扣了六分,駕照於2016.2...
D照於被扣了12分什麼時間可以增駕C
2020年d本增駕c1中途酒駕,扣滿12分,在2020年11月24號處理完,考試完,問看增駕c1還要多久才能考 需要申請增駕的週期,以及上乙個記分週期,沒有違章記12分記錄,才可以到核發d駕駛證地區車管所,申請增駕c1駕駛證。機動車駕駛證申領和使用規定 第十五條已持有機動車駕駛證,申請增加準駕車型的...