版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、會計學1基于多核編程的案例基于多核編程的案例(n l)分析分析第一頁,共36頁。第1頁/共35頁第二頁,共36頁??梢詮恼n程(kchng)網(wǎng)站上下載源代碼第2頁/共35頁第三頁,共36頁。using System.Net.Sockets; /namespaceTcpListener listener = new TcpListener(portNum);listener.Start();TcpClient handler = listener.AcceptTcpClient();int i = ClientSockets.Add ( new ClientHandler(handler) ) ;
2、 (ClientHandler) ClientSocketsi).Start() ;客戶端Socket處理線程客戶端連接實例集監(jiān)聽線程回收線程為每個已經(jīng)接收的連接產(chǎn)生一個線程TCP客戶端請求垃圾線程將被回收允許(ynx)TCP服務(wù)接收客戶端的連接請求。分別(fnbi)為每個請求產(chǎn)生一個線程實例。并啟動。第3頁/共35頁第四頁,共36頁。private static ArrayList ClientSockets ;lock ( ClientSockets.SyncRoot ) int i = ClientSockets.Add ( new ClientHandler(handler) ) ;
3、(ClientHandler) ClientSocketsi).Start() ;線程同步(tngb)第4頁/共35頁第五頁,共36頁。第5頁/共35頁第六頁,共36頁。ThreadReclaim = new Thread( new ThreadStart(Reclaim) );ThreadReclaim.Start() ;private static void Reclaim() while (ContinueReclaim) lock( ClientSockets.SyncRoot ) for ( int x = ClientSockets.Count-1 ; x = 0 ; x- ) O
4、bject Client = ClientSocketsx ; if ( !( ( ClientHandler ) Client ).Alive ) ClientSockets.Remove( Client ) ; Console.WriteLine(A client left) ; Thread.Sleep(200) ; 第6頁/共35頁第七頁,共36頁。ContinueReclaim = false ; ThreadReclaim.Join() ; foreach ( Object Client in ClientSockets ) ( (ClientHandler) Client ).S
5、top() ; 第7頁/共35頁第八頁,共36頁。第8頁/共35頁第九頁,共36頁。 / Schedule task again if ( SharedStateObj.ContinueProcess & !bQuit ) ThreadPool.QueueUserWorkItem(new WaitCallback(this.Process), SharedStateObj);else networkStream.Close(); ClientSocket.Close(); / Deduct no. of clients by one Interlocked.Decrement(ref
6、SharedStateObj.NumberOfClients ); Console.WriteLine(A client left, number of connections is 0, SharedStateObj.NumberOfClients) ; / Signal main process if this is the last client connections / main thread requested to stop.if ( !SharedStateObj.ContinueProcess & SharedStateObj.NumberOfClients = 0
7、) SharedStateObj.Ev.Set();第9頁/共35頁第十頁,共36頁。任務(wù)處理任務(wù)處理任務(wù)處理FIFO隊列結(jié)構(gòu)客戶端請求任務(wù)監(jiān)聽線程當客戶端請求到達,將請求放到隊列中。class ClientConnectionPool / Creates a synchronized wrapper around the Queue. private Queue SyncdQ = Queue.Synchronized( new Queue() );第10頁/共35頁第十一頁,共36頁。class ClientService const int NUM_OF_THREAD = 10; priv
8、ate ClientConnectionPool ConnectionPool ; private bool ContinueProcess = false ; private Thread ThreadTask = new ThreadNUM_OF_THREAD ; public ClientService(ClientConnectionPool ConnectionPool) this .ConnectionPool = ConnectionPool ; public void Start() ContinueProcess = true ; / Start threads to han
9、dle Client Task for ( int i = 0 ; i 0 ) client = ConnectionPool.Dequeue() ; if ( client != null ) client.Process() ; / Provoke client / if client still connect, schedufor later processingle it if ( client.Alive ) ConnectionPool.Enqueue(client) ; Thread.Sleep(100) ; 第11頁/共35頁第十二頁,共36頁。第12頁/共35頁第十三頁,共
10、36頁。第13頁/共35頁第十四頁,共36頁。第14頁/共35頁第十五頁,共36頁。第15頁/共35頁第十六頁,共36頁。第16頁/共35頁第十七頁,共36頁。第17頁/共35頁第十八頁,共36頁。第18頁/共35頁第十九頁,共36頁。第19頁/共35頁第二十頁,共36頁。服務(wù)器端程序界面第20頁/共35頁第二十一頁,共36頁。第21頁/共35頁第二十二頁,共36頁。主線程:管理程序狀態(tài)數(shù)據(jù)包包頭重新封裝。(傳輸速度會受影響,但是質(zhì)量得到了保證。否則(fuz)在傳圖片時會出現(xiàn)缺失、移位等現(xiàn)象)任務(wù)線程:發(fā)送線程接收線程顯示進度條的線程采用臨界段進行同步處理第22頁/共35頁第二十三頁,共36頁
11、。CTCPClient_CE:CTCPClient_CE() /初始化socket環(huán)境(hunjng) WSADATA wsd; WSAStartup(MAKEWORD(1,1),&wsd); /創(chuàng)建線程退出事件句柄 m_exitThreadEvent = CreateEvent(NULL,FALSE,FALSE,NULL); m_bRec = true;第23頁/共35頁第二十四頁,共36頁。/*-【函數(shù)介紹】: 用于打開客戶端socket【入口參數(shù)】: pWnd用于指定父窗口句柄【出口參數(shù)】: (無)【返回 值】: TRUE:打開成功;FALSE:打開失敗-*/BOOL CTCPC
12、lient_CE:Open(CWnd * pWnd) /復位線程退出事件(shjin) ResetEvent(m_exitThreadEvent); /存儲父窗口句柄 m_pOwnerWnd = pWnd; /創(chuàng)建TCP套接字 m_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(m_socket = SOCKET_ERROR);return FALSE; /創(chuàng)建通訊線程 m_tcpThreadHandle = CreateThread(NULL,0,SocketThreadFunc,this,0,NULL); if (m_tcpThre
13、adHandle = NULL) closesocket(m_socket); return FALSE; return TRUE;第24頁/共35頁第二十五頁,共36頁。第25頁/共35頁第二十六頁,共36頁。第26頁/共35頁第二十七頁,共36頁。第27頁/共35頁第二十八頁,共36頁。第28頁/共35頁第二十九頁,共36頁。第29頁/共35頁第三十頁,共36頁。第30頁/共35頁第三十一頁,共36頁。第31頁/共35頁第三十二頁,共36頁。第32頁/共35頁第三十三頁,共36頁。第33頁/共35頁第三十四頁,共36頁。第34頁/共35頁第三十五頁,共36頁。NoImage內(nèi)容(nirng)總
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022-2023學年貴州省六盤水市鐘山區(qū)四年級(上)期末數(shù)學試卷
- Unit-4-My-home-Part-A-教案設(shè)計-小學英語四年級上冊-人教PEP版
- 2025年產(chǎn)品營銷協(xié)議(2篇)
- 2025年個人果園承包合同(4篇)
- 2025年產(chǎn)品供應(yīng)與銷售代合同(三篇)
- 2025年買房書面合同協(xié)議范文(2篇)
- 2025年個人租房的合同常用版(4篇)
- 2025年產(chǎn)品委托銷售合同經(jīng)典版(三篇)
- 2025年個人工程合作協(xié)議范文(2篇)
- 農(nóng)業(yè)項目股權(quán)投資居間合同
- 2025年初中語文:春晚觀后感三篇
- Unit 7 第3課時 Section A (Grammar Focus -4c)(導學案)-【上好課】2022-2023學年八年級英語下冊同步備課系列(人教新目標Go For It!)
- 2025年上半年長沙市公安局招考警務(wù)輔助人員(500名)易考易錯模擬試題(共500題)試卷后附參考答案
- 《教育強國建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 2025河北邯鄲世紀建設(shè)投資集團招聘專業(yè)技術(shù)人才30人高頻重點提升(共500題)附帶答案詳解
- 慈溪高一期末數(shù)學試卷
- 《基于新課程標準的初中數(shù)學課堂教學評價研究》
- 省級產(chǎn)業(yè)園區(qū)基礎(chǔ)設(shè)施項目可行性研究報告
- 2025年中國東方航空招聘筆試參考題庫含答案解析
- 預算績效評價管理機構(gòu)入圍投標文件(技術(shù)方案)
- 重大事故隱患判定標準與相關(guān)事故案例培訓課件
評論
0/150
提交評論