1樓:希聲和寡
這種問題一般的解決方法是這樣的,在你現有的程式裡增加乙個key佇列,進行key事件的緩衝和延滯處理,為了防止key阻塞,可以根據需要設定佇列上限,例如10,或者5。
每讀取完乙個key事件提交處理後,將該key事件出隊。
另外,為了更加嚴謹,再在你的程式里加乙個輪循機制。
通俗的說,也就是定期檢測key佇列,只要不為空,就讀取隊頭key處理。
這個輪循時機,需要根據你的『程式結構來定,大體可以考慮以下幾個時機:
1. 執行緒排程時。
2. 全畫面重新整理完畢後。
3. 每次key佇列更新時(這個效率較低,而且和描畫的cpu資源競爭較為激烈,不大推薦)
c# 多執行緒求助,急,本人目前在用多執行緒處理資料,窗體應用程式。但是一直有個問題不大明白。
2樓:網友
使用backgroundworker吧,這是個非同步的執行緒操作類,很方便的就能實現你說的方法,不需要阻塞什麼東西的。
3樓:路有時不在腳下
窗體類裡建立執行緒吧!便於隨時進行狀態管理。具體的不是很清楚你需要多執行緒執行的任務是什麼,有多少,可能會建立多少個副執行緒?
4樓:網友
不太明白你的意思,你所謂計算量比較大的任務也是在某個執行緒呢迴圈做的?
c# 如何寫多執行緒程式
5樓:網友
我用的是vs2005,執行緒的實現可以用種方法。目前我知道的。一種是安全呼叫,一種是不安全呼叫。
先說不安全呼叫。
先加入名稱空間 using ;
然後在要用新執行緒執行的方法中加入。
thread a=new thread(new threadstart(sayhi())
然後用;開始新的執行緒,執行的**放到。
private void sayhi()
這樣執行的話,就算關了主介面,這個對話方塊也不會消失。
如果想在這個新程序中改變主程式中的介面,則需要在改變前加入一句話。
false;
這樣就可以在新的程序中操作主窗體的控制項,比如"hello";
另一種方法是安全呼叫,不過vs2005中提供的backgroundworker,可以很方便的進行呼叫執行緒,同樣,想通過新程序訪問主程式的話 也是需要加入。
false;
backgroundworker控制項很方便,託乙個到設計介面裡,雙擊這個控制項,然後會生成乙個private void backgroundworker1_dowork(object sender,eventargs e)事件。
把新執行緒要做的工作寫在下邊的**裡。
然後通過;呼叫dowork的**。
而且還可以用private void backgroundworker1_runworkercompleted(object sender, runworkercompletedeventargs e)可以做的收尾工作。
在backgroundworker的方法列表中有。
6樓:網友
物件自帶的方法,通常以begin和end開始(如果物件有此方法,推薦使用);
名稱空間中的thread類,thread thread= new thread(delegate()
可以在物件沒有現成的執行緒操作方法的時候使用;
net 新元件 backgroundworker,基於事件的執行緒操作,可以說是最簡單且最容易理解的操作執行緒的方式。
7樓:網友
先例項化執行緒,然後寫你想要的功能,然後把功能放到執行緒裡。
8樓:網友
using ;
以下2行寫在主程式裡。
thread thread = new thread(new threadstart(function));
/執行緒函式。
private void function()
向大家請教乙個用c/c++編寫多執行緒程式的問題?
9樓:網友
對多執行緒支援各個作業系統的差別是非常巨大的!
比如,linux不支援核心級的執行緒,但是unix和windows就支援。等等很多區別。
所以多執行緒程式設計使用的庫也是針對各個作業系統的。
c/c++語言標準並沒有涉及多執行緒,平時使用的都是各個組織機構的專門的庫,也是和系統有關的。
linux下多執行緒用的最多的是的pthread這個庫, 而在windows下面是微軟專門的庫,在solaris下面和linux的pthread很接近,但是增加了很多內容。
希望對你有幫助。
10樓:網友
目前來說,都是利用系統自定義的多執行緒函式來實現的。
c c++本身並沒有關於多執行緒的定義,不過boots庫提供了乙個多執行緒的解決方案。
11樓:網友
現在還不知道這個問題的答案!
c# 多執行緒 應用程式突然掛起
12樓:
既然有timer就不需要多執行緒了。
既然出現了掛起,說明對控制項的訪問起了衝突,或者資料庫/伺服器吃不消了。
13樓:網友
肯定有問題啦。
當前time控制項佔用窗體的主執行緒。
當然會假死啦。
湖北新藍海是一家專注於網路營銷 網路推廣的領頭企業 ,已為武漢健民、華工雷射、江西仁和等多家知名企業提供網路營銷外包服務。詳情請到各大搜尋引擎中搜尋「湖北新藍海」
linux多執行緒小程式
14樓:
首先宣告我也不是高手,我和你一樣,正在學習可以討論、討論,我說的只是自己的理解,不一定完全正確!
你使用訊號量的作用是做同步的如果operate_data1或者 operate_data2執行緒先執行的話他們不會先去作運算的,不會出現你說的那種「當數沒全寫到陣列裡,就進行運算了」的情況,因為在他們運算之前呼叫了sem_wait(&s);首先要有訊號資源可用才可以去運算,而現在只有3種情況可以獲得訊號資源:
1、初始化訊號量的時候是正值,顯然你的不是 sem_init(&s,0,0);
2、void write_data1(int *a)執行緒執行後;
3、void write_data1(int *a)執行緒執行後;
只有以上這三種情況的任意一種發生了,兩個operate_data中的乙個才可能獲得資源而執行。要解決這種情況最簡單的情況是把兩個寫資料操作放到乙個執行緒中把兩個運算元據放到乙個執行緒中,這樣就不會出現競爭的情況了。或是在把兩個寫資料操作放到乙個執行緒中,在操作執行緒中,在操作前sem_wait(&s);在操作後呼叫sem_post(&s);
C 多執行緒 如何鎖定靜態類中靜態方法的引數
沒明白你的意思,那兩個引數只是形參,不同的執行緒都是獨立的,不會干擾。呼叫方法前用 加執行緒鎖,呼叫結束後釋放。方法是可重入的方法,不存在你說的問題,因此不用鎖引數。靜態類裡的引數本來就是靜態的,如何讓他錯亂你教教我?c 多執行緒呼叫static函式,怎麼利用鎖 多執行緒訪問靜態類中的方法最好加上鎖...
程式設計師如何解決脊椎受損的問題,程式設計師如何解決頸椎受損的問題?
由於曾旭也經常會低頭玩瑤去做一些程式,那麼時間長了。他的脊椎必然會受損的,那這種情況下該怎麼解決呢?首先他需要做一段時間以後指定一下。不要長時間的趴著或者是不要長時間的對著乙個程式。適當的要學會放鬆。我覺得程式設計師不一定個個都得頸椎病。脊椎病。所以要想解決程式設計師不得脊椎病受損的問題,首先就是解...
戴爾電腦出現鍵盤失靈的現象該如何解決
雲騎士科普 筆記本鍵盤是一個很容易出現問題的部件,有的使用者遇到筆記本鍵盤鍵位失靈了,一般維修換鍵盤,至少需要花費一兩百元,而僅僅因為個別按鍵失靈,花 換掉整個鍵盤,顯得會有些不甘心 低拋高吸 電腦卡機 斷電關機 長時間用電腦 滿負荷操作等,系統受損會這樣。反覆開關機試試,放上一段時間試試,還是不好...