多线程服务器适用场合

这篇具有很好参考价值的文章主要介绍了多线程服务器适用场合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前提

  • 进程”指的是fork(2)系统调用的产物

  • 线程”指的是pthread_create()的产物,因此是宝贵的那种原生线程。而且Pthreads是NPTL的,每个线程由clone(2)产生,对应一个内核的task_struct。

Pthreads是一组线程操作的标准,NPTL是 Native POSIX Thread Library 的缩写,是Linux上实现Pthreads标准的一个库。NPTL是Pthreads在Linux平台上的具体实现。NPTL提供了线程创建、同步、互斥、条件变量等功能。

必须使用单线程的场合

  1. 程序可能会 fork(2);

  2. 限制程序的CPU占用率。 8核服务器,单线程只在一个核上跑,cpu使用率也只有 12.5%

一个程序fork(2)之后一般有两种行为:

1. 立刻执行exec(),变身为另一个程序。例如shell和inetd;又比如 lighttpd fork()出子进程,然后运行fastcgi程序。或者集群中运行在计算节点上的负责启动job的守护进程。

2. 不调用exec(),继续运行当前程序。要么通过共享的文件描述符与父进程通信,协同完成任务;要么接过父进程传来的文件描述符,独立完成工作。

event loop 的缺点

多线程服务器适用场合,github

添加图片注释,不超过 140 字(可选)

多线程没有绝对的性能优势

  • IO Bound 和CPU Bound ,任何一方早早先达到瓶颈,多线程都没有啥优势!

  • IO bound和CPU bound是指在计算机系统中,任务执行的瓶颈主要是由I/O操作或者CPU运算所决定。

IO bound(输入输出受限)是指任务的执行时间主要被I/O操作所消耗。CPU的利用率相对较低,大部分时间会处于等待I/O完成的状态。

CPU bound(计算受限)是指任务的执行时间主要被CPU计算所消耗。计算密集型任务,CPU的利用率相对较高,大部分时间会用于执行计算操作。

  • 如果任务是IO bound,则可能需要优化I/O子系统来提高整体性能;

  • 如果任务是CPU bound,则可能需要考虑使用多线程、并行处理等方式来充分利用 CPU 资源。

适用多线程程序的场景

目的

提高响应速度,让IO和“计算”相互重叠,降低latency延迟。虽然多线程不能提高绝对性能,但能提高平均响应性能。

一个程序要做成多线程的,大致要满足:

  • 有多个CPU可用。

  • 线程间有共享数据,即内存中的全局状态。

  • 共享的数据是可以修改的,而不是静态的常量表。如果数据不能修改,那么可以在进程间用 shared memory

  • 提供非均质的服务。即事件的响应有优先级差异,可以用专门的线程来处理优先级高的事件。防止优先级反转。

  • latency (延迟 )和throughput (吞吐量) 同样重要,不是逻辑简单的IO bound或CPU bound程序。换言之,程序要有相当的计算量。

  • 利用异步操作。比如logging。无论往磁盘写log file,还是往log server发送消息都不应该阻塞关键路径。

  • 能 scale up。一个好的多线程程序应该能享受增加CPU数目带来的好处。

  • 具有可预测的性能。随着负载增加,性能缓慢下降,超过某个临界点之后会急速下降。线程数目一般不随负载变化。

  • 多线程能有效地划分责任与功能,让每个线程的逻辑比较简单,任务单一,便于编码。而不是把所有逻辑都塞到一个event loop里,不同类别的事件之间相互影响。文章来源地址https://www.toymoban.com/news/detail-861637.html

到了这里,关于多线程服务器适用场合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是裸金属云服务器,适用于哪些场景,又有哪些优势?

    裸金属云服务器(Cloud Bare Metal,CBM)是一种兼具虚拟机弹性及物理机性能的裸金属云服务,与腾讯云全产品(例如网络、存储、数据库等)无缝融合,能为您提供云端独享的高性能、安全隔离的物理服务器集群。 您的业务应用可以直接访问裸金属云服务器的处理器和内存,

    2024年02月02日
    浏览(54)
  • Centos系列:Centos的DHCP服务器部署(超详细,图文结合,适用于新手)

    server端:内存2G,硬盘80G,仅主机模式连接 (作服务器) client端: 内存1G,硬盘20G,仅主机模式连接 (作客户端) 以下步骤在server端操作 1.以NAT模式打开虚拟机,因为在仅主机模式下虚拟机是无法访问外网的,无法下载dhcp,仅主机模式只是在该模式下将所有仅主机模式的虚

    2024年04月29日
    浏览(47)
  • Git服务器集成 · GitHub 服务器(二)

    本篇文章旨在分享本人在学习Git时的随笔记🤩   当我们可以搭建中央服务器让项目组开发人员共享代码,但是如果我们的开发人员都是通过互联网进行协作,而不是在同一个地方,那么开发时,程序文件代码的版本管理就显得更加重要,这就需要搭建一个互联网的版本库

    2024年02月07日
    浏览(88)
  • Jmeter-非GUI模式下运行jmeter脚本-适用于服务器上持续集成测试

    大部分Jmeter脚本都是部署在Linux上运行,利用Jenkins做接口自动化,定时巡检任务。 1.进入jmeter的目录,bin文件夹 2.运行脚本文件 命令解析: jmeter: 这是 JMeter 的可执行文件路径,用于启动 JMeter 工具 -n: 表示以非 GUI 模式运行 JMeter,也就是无界面模式,通常用于自动化测试或者

    2024年04月28日
    浏览(33)
  • linux 服务器安装多版本 cuda (无 sudo 权限 非 root 用户也适用)

    linux 服务器安装多版本 cuda (无 sudo 权限 非 root 用户也适用) 下载想要版本的 cuda toolkit 下载对应版本 cudnn 以 cuda 10.0 为例 每个用户修改自己home目录下的 /bashrc 文件 对于无 sudo 权限 或者 非 root 用户,在安装第一步中安装cuda的时候,将cuda toolkit的安装路径设置为自己有权限

    2024年02月10日
    浏览(51)
  • 多进程服务器和多线程服务器

    2024年02月19日
    浏览(33)
  • 如何使用租用的云服务器实现神经网络训练过程(超详细教程,新手小白适用)

    超级感谢up主7_xun的B站教学视频: 适合深度学习小白的CV实战——在AutoDL上租用云服务器跑YOLOv5的全过程 链接:适合深度学习小白的CV实战——在AutoDL上租用云服务器跑YOLOv5的全过程_哔哩哔哩_bilibili 在GitHub中搜索yolov,点击第一个项目,ultralytics/yolov5 点击第一个项目进入后,

    2023年04月21日
    浏览(51)
  • Web服务器实现|基于阻塞队列线程池的Http服务器|线程控制|Http协议

    代码地址:WebServer_GitHub_Addr 摘要 本实验通过C++语言,实现了一个基于阻塞队列线程池的多线程Web服务器。该服务器支持通过http协议发送报文,跨主机抓取服务器上特定资源。与此同时,该Web服务器后台通过C++语言,通过原生系统线程调用 pthread.h ,实现了一个 基于阻塞队列

    2024年02月07日
    浏览(61)
  • 适用于深度学习的GPU服务器选RTX4090与RTX3090哪个更合适、更划算?

    一、弄清基本参数对比 RTX 4090 具有 760 亿个晶体管、16384 个 CUDA 核心和 24 GB 高速美光 GDDR6X 显存, 4090单精度浮点73TFLOPs RTX 3090 ,搭载了 10496 个流处理器与 24G GDDR6X 显存,带宽为 936GB/S。 3090单精度浮点35.7TFLOPs   二、以同等算力的情况做简单的对比 简单给大家算一下, 从单

    2024年02月17日
    浏览(48)
  • Centos7下的DNS服务器部署(每一步图文结合超详细,适用于初学者)

    关于DNS服务,网上都有很多很详细很专业的讲解,但是对于大部分初学者可能看的比较懵懂,用白话来说就是起初人们因为对大量用于访问服务器的IP地址难以记住,所以就逐渐出现了域名的形式(诸如:www.baidu.com 之类的),但是计算机本身只能识别出像192.168.10.112之类的

    2024年02月07日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包