多进程,多线程了解

需求 最新希望了解一下,多进程和多线程分别适用的场景 解决 多进程适合 CPU 密集型任务:如果应用程序需要大量的 CPU 计算,并且没有太多的 I/O 操作,则使用多进程可能更加适合。这是因为每个进程都有自己的 CPU 时间片,可以并行执行,从而提高整个应用程序的性能。 隔离性:如果应用程序需要隔离不同的任务或数据,以确保它们不会相互影响,则使用多进程可能更加适合。每个进程都有自己的地址空间和资源,因此不同的进程可以独立运行,互相不会干扰。 多线程适合 I/O 密集型任务:如果应用程序需要大量的 I/O 操作(例如网络通信、磁盘读写等),则使用多线程可能更加适合。这是因为 I/O 操作通常是阻塞的,一个线程被阻塞时,另一个线程可以继续执行,从而提高整个应用程序的性能。 共享性:如果应用程序需要共享数据,并且需要在不同的任务之间共享数据,那么使用多线程可能更加适合。线程可以在同一地址空间内运行,它们可以访问相同的变量和数据结构,从而可以方便地共享数据。 轻量级任务:如果应用程序需要处理大量的轻量级任务,并且创建进程的开销太大,那么使用多线程可能更加适合。 参考 多线程和多进程的适用场景 一文弄懂多进程与多线程 多线程还是多进程的选择及区别

<span title='2023-07-03 18:06:00 +0800 CST'>2023-07-03</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;26 words&nbsp;·&nbsp;RamLife

消息队列和 socket 速度

需求 选择消息队列或者 socket 来传递信息,速度哪个快? 解决 长连接时, socket 比 queue 慢 10% 短连接时,速度更慢。 建议: 长连接,使用 socket,毕竟方便,效率也没有低太多。 短连接,使用 queue,或者数据库连接池。 参考 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】Linux下消息队列和socket绝对速度比拼 【转】Linux下消息队列和socket绝对速度比拼 数据库连接池学习笔记(一):原理介绍+常用连接池介绍 用消息队列和socket实现聊天系统

<span title='2023-06-29 18:06:00 +0800 CST'>2023-06-29</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;23 words&nbsp;·&nbsp;RamLife

多进程通信几种方式介绍

需求 多进程通信有哪几种方式? 解决 管道 命名管道 FIFO 使用 mkfifo 来创建管道文件。 不相关进程也可以通信。 匿名管道 使用 fork 来创建。只能用于父子进程。 消息队列 queue 保存在内核中的消息列表,如果没有释放,会一直存在。缺点时,不适合大数据的传输,单个消息有长度限制,全部消息总长度也有限制。 共享内存 同一块内存,多个进程都可以读写,可以省去复制的时间。但是如何管理多个进程的读写是个问题。 信号量 信号量可以用来管理共享内存,只有拿到信号量的才能进行读写。 信号 异常工作下的情况,就需要使用信号来进行干预了。比如说 ctrl-c 发出的 SIGINT 用来终止进程。 socket 可以用来本机之间不同进程的通信,也可以用作网络上不同主机之间的通信。 参考 {整理} Linux 进程间通信的方式、应用场景及优缺点 Linux进程间通信(IPC)的六种方式 一文搞懂六大进程通信机制原理(全网最详细) Linux进程间通信详解(最全)

<span title='2023-06-28 18:06:00 +0800 CST'>2023-06-28</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;36 words&nbsp;·&nbsp;RamLife

localhost, 127.0.0.1, ip 区别

需求 和本级进程通信的时候,使用 localhost, 127.0.0.1, 本级 ip 之间的区别? 解决 localhost 连 IP 都没有,不会有IP报头,只会有 TCP 报头。从上向下,经过 应用层,传输层。 127.0.0.1 有 IP,会有 IP 报头。 从上向下,经过 应用层,传输层,网络层。 参考 【IP/TCP】127.0.0.1和localhost和本机IP三者的区别

<span title='2023-06-27 18:06:00 +0800 CST'>2023-06-27</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;24 words&nbsp;·&nbsp;RamLife