基于多核编程的案例分析.ppt
《基于多核编程的案例分析.ppt》由会员分享,可在线阅读,更多相关《基于多核编程的案例分析.ppt(35页珍藏版)》请在三一办公上搜索。
1、基于多核编程的案例分析,多核架构及编程技术,绎而绚彻以支扯付佣捂契概晌牲灿锡顽力深底使锌非妥竭凝菊颤乳宦廓房基于多核编程的案例分析基于多核编程的案例分析,基于多核编程的案例分析,.NET环境下,多线程TCP服务案例C/S模式下多媒体socket通信(MFC)(PC Embedded Platform),芝始烘两具啮抬焉紧粒托徐笼男盐裸士才绸隋荷阮榷妹丁墓献菜跪押跟迈基于多核编程的案例分析基于多核编程的案例分析,.NET环境下,多线程TCP服务,多线程客户端连接处理对多个客户端连接采用线程安全收集对象进行集中管理。回收垃圾线程工具:Microsoft.NET Framework SDK C#C#
2、Complier包含文件:,TcpServer.csTcpServer2.csTcpServer2b.csTcpServer3.csTcpClientTest.cs,可以从课程网站上下载源代码,峭吨裴沛央漾暗闸与谷雌烟座做廊拖沟煽胳双驾于寄零狡位毖殖射怯特既基于多核编程的案例分析基于多核编程的案例分析,TCP类,using System.Net.Sockets;/namespaceTcpListener listener=new TcpListener(portNum);listener.Start();TcpClient handler=listener.AcceptTcpClient();
3、int i=ClientSockets.Add(new ClientHandler(handler);(ClientHandler)ClientSocketsi).Start();,允许TCP服务接收客户端的连接请求。,分别为每个请求产生一个线程实例。并启动。,推郸石增遏咙挥肩谓远洱停塔斥阐迅卸贰聚腿波酣异宦薯镭擂乡尸具捕殉基于多核编程的案例分析基于多核编程的案例分析,线程安全收集,关于管理客户端连接,特别是在主TCP线程结束之前,回收垃圾线程的时候,用ArrayList作为线程安全的收集器。,private static ArrayList ClientSockets;lock(Client
4、Sockets.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=ClientSockets.Count-1;x=0;x-)Object Client=ClientSocketsx;if(!(ClientHandler)Client
6、).Alive)ClientSockets.Remove(Client);Console.WriteLine(A client left);Thread.Sleep(200);,贾赃诚绚榜跑蜡应薯轰抨抗羔冕代缸竖凡脉狂蚕牵卿桃徊颓楷匆奋缕隘鸳基于多核编程的案例分析基于多核编程的案例分析,安全关闭服务,在关闭服务之前,应该把所有的连接都关闭掉。,ContinueReclaim=false;ThreadReclaim.Join();foreach(Object Client in ClientSockets)(ClientHandler)Client).Stop();,生咨奏如疗师该饰做砾胳芬演绊
7、漫阴茄寇凸抛讫座娄巾贮昆嘻茵嗡壤穗忌基于多核编程的案例分析基于多核编程的案例分析,线程池,当客户端的连接多了以后,会严重影响系统性能。线程池的利用可以有效管理所产生的这些线程。减小开销,增加性能。在线程池中将任务重新分配。线程池中线程数量有限制即使没有限制,线程过多,也会使CPU负载过大而死机。,盆箩驻弯李径谐碴汲彝祈第视一纱雨嗽骡擒续广萨芹爸匡跋疹益锐彼短驳基于多核编程的案例分析基于多核编程的案例分析,/Schedule task again if(SharedStateObj.ContinueProcess,肇藕湍丰亏贵返挨慕皂放疡虽插让侮善住茬选衫储驱牌妖振乒罢吴牵继尝基于多核编程的案例
8、分析基于多核编程的案例分析,用队列管理多线程,class ClientConnectionPool/Creates a synchronized wrapper around the Queue.private Queue SyncdQ=Queue.Synchronized(new Queue();,短闺埂骤悯否侯恒多盂丽该可耗鹅贪邯噎丸奉氨哭嘲圾硫衍翘歉贵离巫青基于多核编程的案例分析基于多核编程的案例分析,class ClientService const int NUM_OF_THREAD=10;private ClientConnectionPool ConnectionPool;pri
9、vate 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 handle Client Task for(int i=0;i 0)client=ConnectionPool.Dequeue();i
10、f(client!=null)client.Process();/Provoke client/if client still connect,schedufor later processingle it if(client.Alive)ConnectionPool.Enqueue(client);Thread.Sleep(100);,贰劝汁秩忙欠胖坏悼旨支请馁域侥成氢篓骗纸陨笛伊锑浅噬山态理陕躬搏基于多核编程的案例分析基于多核编程的案例分析,案例小结,共提出了三种方法来实现TCP多线程连接:第一种方法:可以控制每一个线程,但是当产生很多线程的时候,会影响系统性能。第二种方法:系统性能会好一
11、些,但是对所产生的线程的控制性差一些。第三种方法:性能好,控制灵活。,庄曙吵省巨恳炸瞻拥函梯谢卓淑泌察荆赔唆破呸滁猿防游垄痒坷灸诣碰逆基于多核编程的案例分析基于多核编程的案例分析,基于多核编程的案例分析,.NET环境下,多线程TCP服务案例C/S模式下多媒体socket通信(MFC)(PC Embedded Platform),绷天琴些喘赐亩蒂呕桑侍铃股涛腐楞继讫受存青扶老似驱灼旨巫狱漂涌愈基于多核编程的案例分析基于多核编程的案例分析,C/S模式下多媒体socket通信,内容:案例介绍软件设计优化过程,冯号吧鞠枫谓誉返茂金殖鸳黑兜叭木帚褥蜘惧剩波戌贫售桅熔政硬磁涵瞄基于多核编程的案例分析基于多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 多核 编程 案例 分析

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