多线程多进程使用场景(编程中什么时候使用多线程)

2023-10-10 08:00:08 87

多线程多进程使用场景(编程中什么时候使用多线程)

本文目录

编程中什么时候使用多线程

多线程的使用主要是用来处理程序“在一部分上会阻塞”,“在另一部分上需要持续运行”的场合。一般是根据需求,可以用多线程,事件触发,callback等方法达到。但是有一些方法是只有多线程能办到的就只有用多线程或者多进程来完成。举个简单的例子,能理解就行。假设有这样一个程序,1会不停的处理收到的所有TCP请求。对于每个TCP请求做不同的操作。不能有遗漏2有很多特定的请求会向一个服务器发送存储的数据,或者是等待用户输入。来看看。第1个要求很简单。用个while循环就搞定了。但第2个特性呢。一旦在等待用户输入或者是连接服务器时,程序会“阻塞”一段时间,这一段时间内就无法处理其他的TCP请求了。所以可以利用多线程,每个线程处理不同的TCP请求。这样程序就不会“阻塞”掉了。

多进程跟多线程如何取舍,在不同系统,不同场景下

一般多进程用于服务器比较多,多线程用于客户端比较多。比如PHP服务器是典型的多进程。游戏客户端,讯雷等下载工具,QQ等聊天工具,都是多线程的。不过事情也不绝对,从任务管理器上看,谷歌浏览器是多进程的,而绝大多数windows服务器程序是多线程的。而Linux server用多进程非常多。

怎么理解并发多进程服务和多线程服务器

1,进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。 2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 两者都可以提高程序的并发度,提高程序运行效率和响应时间。 线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。 答案二: 根本区别就一点:用多进程每个进程有自己的地址空间(address space),线程则共享地址空间。所有其它区别都是由此而来的: 1。速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内。 2。资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内。 3。同步问题:线程使用公共变量/内存时需要使用同步机制还是因为他们在同一个地址空间内。 网上的答案的 版本怎么想怎么都太学术了。我当时看到过一个比喻特别的好, 我就模仿者把它说下来哈,有错误希望支持哈: 多进程的服务器就好比是 立体的交通系统(立交桥)虽然说建造的时候花费比较大,消耗的资源比较多,但是真要是跑起来不会交通堵塞。但是汽车在上面跑,相互通信就是个很费事儿问题(进程间通信比较麻烦);多线程就好比是平面的交通系统,造价低,但是很容易交通堵塞, 但是也有好处同步的时候方便。 在网络服务器方面: 单进程 《 多进程(单线程)《 多进程(多线程) 在游戏方面的应用: I、多线程服务器,玩家数据缓存和向DB的存储我们可以开一个线程单独去做,这样不会有什么大的问题。日志和网络上面说过可以很容易切割出去,主要就是对游戏逻辑的切割。 A:按场景分线程,一个线程管理若干个场景。这样配置灵活,一个线程可以管理若干个小场影,除非有个场景人多到一个CPU跑不下来,一般的游戏都会满足需求。缺点则是不在同一线程的Object在做逻辑交互时,必须用异步,如果用到了脚本,那么这里的复杂度和性能要值得注意。如果项目中出现单个服务器解决不鸟的问题(例如战场服务器),似乎就成了多线程多进程的庞大架构。 B:将某些功能切割到其它线程,例如Object的管理和查找,NPCAI的寻路,这种方式貌似在做逻辑需要分离到别的线程模块功能时有点麻烦,如果直接上锁等待肯定不是最好的方式,所以这些逻辑必须变成异步。 2、多进程服务器,其实这里的多进程和场景多线程改成了多进程。这里玩家数据缓存和向DB的存储我觉得用一个单独的DB服务器。多进程服务器可以在GameServer和GameClient之间加一个Gate,因为在跨服场景不需频繁断线连接。多进程服务器所有的通讯都依靠网络,有些逻辑必须有网络延迟的消耗。优点是配置灵活,在物理机器性能不够时可以通过扩充物理机器来解决 服务器还有有一个很蛋疼的问题就是过载: 下面介绍一下产生的原因和解决办法: 服务器过载: 原因是高优先级处理阶段对CPU的不公平抢占。所以,如果限制高优先级处理阶段对CPU的占用率,或者限制处理高优先级的CPU个数,都可以减轻或者消除收包活锁现象。具体的可以采用以下的方法: 方法一、采用轮询机制 为了减少中断对系统性能的影响,在负载正常的情况下采用“下半处理”的方法就非常有效,而在高负荷情况下,采用这个方法仍然会造成活锁现象,这时可以采用轮询机制。虽然这个方法在负载正常的情况下会造成资源的浪费和响应速度降低,但在网络数据频繁到达服务器时就要比中断驱动技术有效的多。 方法二、减低中断的频率 这里主要有两种方法:批中断和暂时关闭中断。批中断可以在超载时有效的抑制活锁现象,但对服务器的性能没有什么根本性的改进;当系统出现接收活锁迹象时,可以采用暂时关闭中断的方法来缓和系统的负担,当系统缓存再次可用时可以再打开中断,但这种方法在接收缓存不够大的情况下会造成数据包丢失。 方法三、减少上下文切换 这种方法不管服务器在什么情况下对性能改善都很有效,这时可以采用引入核心级(kerne1—leve1)或硬件级数据流的方法来达到这个目的。核心级数据流是将数据从源通过系统总线进行转发而不需要使数据经过应用程序进程,这个过程中因为数据在内存中,因此需要CPU操作数据。 硬件级数据流则是将数据从源通过私有数据总线或是虽等DMA通过系统总线进行转发而不需要使数据经过应用程序进程,这个过程不需要CPU操作数据。这样在数据传输过程中不需要用户线程的介入,减少了数据被拷贝的次数,减少了上下文切换的开销。

Linux下多线程和多进程程序的优缺点,各个适合什么样的业务场景

多进程比较安全,因为默认情况下不同进程之间的内存是独立的(如果需要共享内存则需要进行进程间通信)。而多线程下,内存是共享的,这时就比较危险了,你要自己使用锁、信号量等机制来解决内存块的同时读写和同步等等。如果两个功能没有数据需要共享,或只有前后递进关系,建议使用多进程。如果两个功能需要同时对一块数据进行处理(例如需要对资源进行创建和老化删除),则需要使用多线程,这时可能需要使用锁等机制来控制线程冲突。

Linux 下多线程和多进程程序的优缺点,各自适合什么样的业务场景

Linux 下多线程和多进程程序的优缺点,各自适合什么样的业务场景  IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linux更适合做high performance server,不过在多线程这个具体的领域内,linux还是稍逊windows一点。这应该是情有可原的,毕竟unix家族都是从多进程过来的,而 windows从头就是多线程的。  如果是UNIX/linux环境,采用多线程没必要。  多线程比多进程性能高?误导!  应该说,多线程比多进程成本低,但性能更低。  在UNIX环境,多进程调度开销比多线程调度开销,没有显著区别,就是说,UNIX进程调度效率是很高的。内存消耗方面,二者只差全局数据区,现在内存都很便宜,服务器内存动辄若干G,根本不是问题。  多进程是立体交通系统,虽然造价高,上坡下坡多耗点油,但是不堵车。  多线程是平面交通系统,造价低,但红绿灯太多,老堵车。  我们现在都开跑车,油(主频)有的是,不怕上坡下坡,就怕堵车。  高性能交易服务器中间件,如TUXEDO,都是主张多进程的。实际测试表明,TUXEDO性能和并发效率是非常高的。TUXEDO是贝尔实验室的,与UNIX同宗,应该是对UNIX理解最为深刻的,他们的意见应该具有很大的参考意义。

多线程多进程使用场景(编程中什么时候使用多线程)

本文编辑:admin

更多文章:


month函数取两位(excel中的日期函数中怎样让月份始终显示两位数)

month函数取两位(excel中的日期函数中怎样让月份始终显示两位数)

本文目录excel中的日期函数中怎样让月份始终显示两位数asp中,month(now) 取两位excel公式问题 month(now())怎样能让他出来两位的月,比如现在是6月份,单元格显示6,如何能让他显示06javascript 月份日

2024年7月16日 20:13

推箱子java课程设计(推箱子鼠标移动算法(JAVA编程))

推箱子java课程设计(推箱子鼠标移动算法(JAVA编程))

各位老铁们好,相信很多人对推箱子java课程设计都不是特别的了解,因此呢,今天就来为大家分享下关于推箱子java课程设计以及推箱子鼠标移动算法(JAVA编程)的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录推箱子

2024年7月14日 00:46

用例图怎么画(uml用例图怎么画)

用例图怎么画(uml用例图怎么画)

本文目录uml用例图怎么画用例图用什么工具画系统用例图怎么画用例图怎么画word如何画用例图图书馆阅览室座位管理系统用例图怎么画系统用例图是用什么画图工具画啊怎么使用word画用例图uml用例图怎么画用例是系统、子系统或者类和外部的参与者进

2024年7月22日 16:38

swoole协程(怎样成为IT架构师)

swoole协程(怎样成为IT架构师)

本文目录怎样成为IT架构师为什么说Swoft是PHP界的Springboot国外都有哪些php协程框架swoole_table可以实现没有关系的进程之间的通讯吗为什么php自带的socket不怎么听说,基本都是用swoole,workerm

2024年6月27日 10:49

文件转换器在线(word转换成pdf转换器在线免费的)

文件转换器在线(word转换成pdf转换器在线免费的)

其实文件转换器在线的问题并不复杂,但是又很多的朋友都不太了解word转换成pdf转换器在线免费的,因此呢,今天小编就来为大家分享文件转换器在线的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录word转换成pdf转

2024年8月25日 09:55

memcached怎么登录(在windows环境中怎么启动memcached)

memcached怎么登录(在windows环境中怎么启动memcached)

本文目录在windows环境中怎么启动memcachedphp 使用memcached 怎么做登录win怎么修改memcached能远程访问在windows环境中怎么启动memcached分2部分安装memcache的服务打开php的mem

2024年6月28日 23:26

idea配置java环境变量(idea 运行java怎么配置文件)

idea配置java环境变量(idea 运行java怎么配置文件)

本文目录idea 运行java怎么配置文件安装tomcat后怎么配置运行javawebwindows下的idea怎么配置linux下的jdk,maven,git以及vsftpd等idea正确读取到环境变量装了idea还要装jdk吗idea未

2024年7月24日 05:32

css与div测试题(关于div+css的问题)

css与div测试题(关于div+css的问题)

大家好,关于css与div测试题很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于关于div+css的问题的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录

2024年8月6日 10:50

endeavor什么意思(endeavor可数还是不可数)

endeavor什么意思(endeavor可数还是不可数)

本文目录endeavor可数还是不可数endeavor struggle try attempt的区别endeavor的翻译endeavor可数还是不可数endeavor做名词时意为:努力;尝试;任务。可数名词单一的努力用单数1.Hard

2023年9月2日 03:00

chmod修改文件夹及子目录(linux怎么修改一个目录下所有子目录权限)

chmod修改文件夹及子目录(linux怎么修改一个目录下所有子目录权限)

本文目录linux怎么修改一个目录下所有子目录权限“修改/home文件夹内所有的文件和文件夹及子文件夹为可写可读可执行,命令为如何在linux下快速批量修改文件夹和文件权限linux,chmod如何更改所有子目录的权限,要包括隐藏文件如何在

2024年5月30日 20:26

win10关机命令(win10关机快捷键指令)

win10关机命令(win10关机快捷键指令)

本文目录win10关机快捷键指令win10笔记本彻底关机电脑快捷键关机win10win10关机快捷键指令1、按下“Win+R”组合键打开运行,在运行框中输入:shutdown.exe -s -t 0 0命令,按下回车键即可马上关闭计算机;方

2023年6月4日 07:40

表单设计插件(AE影视常用插件FORM的应用技巧)

表单设计插件(AE影视常用插件FORM的应用技巧)

本文目录AE影视常用插件FORM的应用技巧如何利用粒子插件particular与Form来制作下雨和下雪的效果用FineReport做java报表开发插件怎么样有人用过这款工具么ae汉化版里面对应form插件的是什么中文插件AE用Form插

2024年4月13日 06:10

stripos php(php如何获取字符串某字符的位置)

stripos php(php如何获取字符串某字符的位置)

本文目录php如何获取字符串某字符的位置php截取指定2个字符之间字符串的方法求一段php代码,禁止用户直接输入网址访问,但是通过搜索引擎搜索可以正常访问!stripos — 查找字符串首次出现的位置(不区分大小写)php 这个函数能详细解

2024年7月20日 15:22

发动机css是什么意思(css是什么型号的发动机)

发动机css是什么意思(css是什么型号的发动机)

大家好,关于发动机css是什么意思很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于css是什么型号的发动机的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目

2024年9月1日 07:20

济南市java编程培训班(济南有哪些java培训机构)

济南市java编程培训班(济南有哪些java培训机构)

“济南市java编程培训班”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看济南市java编程培训班(济南有哪些java培训机构)!本文目录济南有哪些java培训机构济南易途java培训怎么样学费多少济南java培训机构培训j

2024年7月3日 07:10

expect(Expect可以接从句吗)

expect(Expect可以接从句吗)

本文目录Expect可以接从句吗expect的名词是什么Expect可以接从句吗expect是及物动词,可以接宾语从句:We expect that it will be popular.我们期望它会流行起来。其它用法:expect to

2024年1月5日 13:40

turtle英语发音试听(咕力说唱英语turtle歌词)

turtle英语发音试听(咕力说唱英语turtle歌词)

本文目录咕力说唱英语turtle歌词turtle英语怎么读turtle英语怎么读发音 turtle英语怎么读乌龟和小香猪的英语怎么tuytie是啥意思英语译成汉语TURTLE用英语怎么读海龟英文怎么读音turtle英语怎么读发音turtle

2024年6月14日 21:36

href翻译(href 传值 中文乱码问题)

href翻译(href 传值 中文乱码问题)

本文目录href 传值 中文乱码问题htm网页链接及翻译网页设计里的url标记与src标记与href标记href 传值 中文乱码问题这个乱码产生的原因主要是JS造成的与你的服务器语言无关,只要你保证接受页面和客户端的页面使用的是统一的编码格

2023年12月28日 18:20

餐饮点餐系统asp源码(用PHP+MYSQL做一个简单的点餐系统的后台,初学者. 请高手指点下如何实现后台添加菜名 餐馆 价格)

餐饮点餐系统asp源码(用PHP+MYSQL做一个简单的点餐系统的后台,初学者. 请高手指点下如何实现后台添加菜名 餐馆 价格)

本文目录用PHP+MYSQL做一个简单的点餐系统的后台,初学者. 请高手指点下如何实现后台添加菜名 餐馆 价格开发一套小程序+点餐系统费用多少点餐外卖餐饮系统开发找哪个公司_外卖点餐平台有哪些小程序点餐系统怎么开发餐饮点菜系统哪个系统好用用

2024年6月26日 15:06

excel官方下载(请问办公软件excel和word在哪下载啊)

excel官方下载(请问办公软件excel和word在哪下载啊)

本文目录请问办公软件excel和word在哪下载啊电脑excel下载方法介绍excel电子表格官网在哪下载呀要网址电脑如何下载excel2020版本office2016官方下载 免费完整版word激活后在哪下载word excel在电脑上怎

2024年7月22日 11:30

近期文章

beside(“beside”怎么读)
2024-09-28 14:41:21
本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1731
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索