模型服务连接失败

为什么要用子进程,不用子线程?

并发Redis
分类
Java 并发
难度
未设置
来源数
1
更新时间
2026/03/29 00:57

答案

1. 子进程进行 AOF 重写期间,主进程可以继续处理命令请求,从而避免阻塞主进程; 2. 子进程带有主进程的数据副本,这里使用子进程而不是线程,因为如果是使用线程,多线程之间会共享内存,那么在修改共享内存数据的时候,需要通过加锁来保证数据的安全,而这样就会降低性能。而使用子进程,创建子进程时,父子进程是共享内存数据的,不过这个共享的内存只能以只读的方式,而当父子进程任意一方修改了该共享内存,就会发生「写时复制」,于是父子进程就有了独立的数据副本,就不用加锁来保证数据安全。

相关题目(5)

分布式系统Redis
分布式系统并发Redis
分布式系统Redis
分布式系统并发Redis

元信息

审核状态: active
关联来源: 1

来源面经题(0)

这道题目前没有手动沉淀的面经题来源。

来源(1)

Java八股(数据库).md

knowledge_note
Question 111: 为什么要用子进程,不用子线程? Source answer: 1. 子进程进行 AOF 重写期间,主进程可以继续处理命令请求,从而避免阻塞主进程; 2. 子进程带有主进程的数据副本,这里使用子进程而不是线程,因为如果是使用线程,多线程之间会共享内存,那么在修改共享内存数据的时候,需要通过加锁来保证数据的安全,而这样就会降低性能。而使用子进程,创建子进程时,父子进程是共享内存数据的,不过这个共享的内存只能以只读的方式,而当父子进程任意一方修改了该共享内存,就会发生「写时复制」,于是父子进程就有了独立的数据副本,就不用加锁来保证数据安全。 Reviewed answer: 因为子进程执行 AOF 重写时,主进程仍可继续处理请求;且进程间不共享可写内存,结合写时复制可避免线程间共享内存带来的加锁开销与数据安全问题。