C 用12路分12個執行緒接收UDP資料,怎麼樣才能優化執行緒

2025-02-02 07:40:25 字數 2715 閱讀 6330

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駕駛證。機動車駕駛證申領和使用規定 第十五條已持有機動車駕駛證,申請增加準駕車型的...