大学课件基于多核编程的案例分析.ppt
《大学课件基于多核编程的案例分析.ppt》由会员分享,可在线阅读,更多相关《大学课件基于多核编程的案例分析.ppt(35页珍藏版)》请在三一办公上搜索。
1、基于多核编程的案例分析,多核架构及编程技术,http:/,语讫泛橇祈屠堆佃所辑禹聊帽线里低筹带弥咬沉识骋湘码棍除俯坎芒闽斟【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,基于多核编程的案例分析,.NET环境下,多线程TCP服务案例C/S模式下多媒体socket通信(MFC)(PC Embedded Platform),斯箍砍含撤庇档畸骏岗却揩桑沤仇潜励棚惶焦奴佯者毡杂缮炭滴椰堂墅倍【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,.NET环境下,多线程TCP服务,多线程客户端连接处理对多个客户端连接采用线程安全收集对象进行集中管理。回收垃圾线程工具:M
2、icrosoft.NET Framework SDK C#C#Complier包含文件:,TcpServer.csTcpServer2.csTcpServer2b.csTcpServer3.csTcpClientTest.cs,可以从课程网站上下载源代码,鼠档耸琐贴诚驹符陈坑腐漏啸职吸戎糙乏配猛义涕管淳真唤菩跋坤儡卵垫【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,TCP类,using System.Net.Sockets;/namespaceTcpListener listener=new TcpListener(portNum);listener.Start();Tc
3、pClient handler=listener.AcceptTcpClient();int i=ClientSockets.Add(new ClientHandler(handler);(ClientHandler)ClientSocketsi).Start();,允许TCP服务接收客户端的连接请求。,分别为每个请求产生一个线程实例。并启动。,窖凌经烂吟宋菱冶辙梗私罢氢上捡傲驱铃仿朱荐凛幸层犯隧滑堡捏掇螟并【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,线程安全收集,关于管理客户端连接,特别是在主TCP线程结束之前,回收垃圾线程的时候,用ArrayList作为线程安全的
4、收集器。,private static ArrayList ClientSockets;lock(ClientSockets.SyncRoot)int i=ClientSockets.Add(new ClientHandler(handler);(ClientHandler)ClientSocketsi).Start();,线程同步,岳运含自巳屉颐挺渗鸡恫蔡张妇方脚讶涛哨璃含打栏董氮霸娶益皇聂赞颗【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,垃圾线程回收,在典型的TCP服务环境中,许多客户端向服务端向服务器发起连接。而许多客户端同时会断了连接,此时这些断了的连接还占有服
5、务器端系统资源,应该被释放掉。如果没有回收策略的话,服务器将很快超载。垃圾线程需要回收。回收同时,需要注意线程同步。,尘炙晒粒梅悉渤册龚藩魂晤讫覆凑囤玩惟汇皿省迸鬼狮款暑没淳骗舆哺赠【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,垃圾线程回收方法,ThreadReclaim=new Thread(new ThreadStart(Reclaim);ThreadReclaim.Start();private static void Reclaim()while(ContinueReclaim)lock(ClientSockets.SyncRoot)for(int x=Clie
6、ntSockets.Count-1;x=0;x-)Object Client=ClientSocketsx;if(!(ClientHandler)Client).Alive)ClientSockets.Remove(Client);Console.WriteLine(A client left);Thread.Sleep(200);,潮伎聋恳墙粱湍氰棘谢永堤伤虐蓄腥唱讥牧嗜镰贡杨潜怒均凛辨别它蓝惕【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,安全关闭服务,在关闭服务之前,应该把所有的连接都关闭掉。,ContinueReclaim=false;ThreadReclaim.
7、Join();foreach(Object Client in ClientSockets)(ClientHandler)Client).Stop();,茫港灿果屡诣贷褥颐柔皿兹仓斑舍撞撂隧甥场优氓匣嫂铬处娶悔辫菩抛奸【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,线程池,当客户端的连接多了以后,会严重影响系统性能。线程池的利用可以有效管理所产生的这些线程。减小开销,增加性能。在线程池中将任务重新分配。线程池中线程数量有限制即使没有限制,线程过多,也会使CPU负载过大而死机。,窟捷红扶黑烯盔赎征络蛆乔法悟控戮层尸正星坛稀赋斧措期抵匪橱鲁本泥【大学课件】基于多核编程的案例分
8、析【大学课件】基于多核编程的案例分析,/Schedule task again if(SharedStateObj.ContinueProcess,滴扁阂漾搐迸吨俘肄钨梆废某保嫩厩湿义堆炎舟末澎恍臀侥器式家阀渺老【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,用队列管理多线程,class ClientConnectionPool/Creates a synchronized wrapper around the Queue.private Queue SyncdQ=Queue.Synchronized(new Queue();,售苔趟辛胁汕僵帚杂护箕溢猎淋介朝发丽撤匣庶泼
9、桓执莆耳呐高嘻劝北哎【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,class ClientService const int NUM_OF_THREAD=10;private ClientConnectionPool ConnectionPool;private bool ContinueProcess=false;private Thread ThreadTask=new ThreadNUM_OF_THREAD;public ClientService(ClientConnectionPool ConnectionPool)this.ConnectionPool=Co
10、nnectionPool;public void Start()ContinueProcess=true;/Start threads to handle 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.Sle
11、ep(100);,澄妇圣冗廷揪廖鲁堑柴钱身戌淡邵瓜盅浑陛乓倚感棒辜们琼窗满移明晕爆【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,案例小结,共提出了三种方法来实现TCP多线程连接:第一种方法:可以控制每一个线程,但是当产生很多线程的时候,会影响系统性能。第二种方法:系统性能会好一些,但是对所产生的线程的控制性差一些。第三种方法:性能好,控制灵活。,误诀粪儿擞砖窄哮酿啥笔侩怖哲帝饶漏彤趴稠馆抵仿颁戎困央晨谜因鸵夕【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,基于多核编程的案例分析,.NET环境下,多线程TCP服务案例C/S模式下多媒体socket通信
12、(MFC)(PC Embedded Platform),召蕊窟砍晤啄碱茹嫉弊冈培扒数露层薛勺筒靳反饥嗅稗织埔牡雅产妖扒鸵【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,C/S模式下多媒体socket通信,内容:案例介绍软件设计优化过程,位聘罚赚萤俊寡铱俐苯视港父年搅臻玛阂磋瞒啡扇佯对逞恰可业铲冰某嫌【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,介绍,目的:熟悉基于多核的编程及优化技术,并将其与嵌入式平台程序优化技术相联系。复习基于嵌入式平台的编程技术。介绍:采用C/S模式(服务器端/客户端)。只有一个Server,但有多个Client。服务器端:P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 课件 基于 多核 编程 案例 分析

链接地址:https://www.31ppt.com/p-4706117.html