面试题答案
一键面试创建简单线程
在Ruby中,可以使用 Thread.new
方法来创建一个简单的线程,示例代码如下:
thread = Thread.new do
# 线程执行的代码块
puts "This is a thread"
end
thread.join # 等待线程执行完毕
线程与进程在资源占用和执行特点上的主要区别
- 资源占用:
- 进程:每个进程都有独立的地址空间,包括代码段、数据段、堆和栈等,资源占用较大。进程间的资源相互隔离,若一个进程崩溃,通常不会影响其他进程。
- 线程:线程共享所属进程的地址空间和资源,如代码段、数据段、堆等,仅拥有自己独立的栈空间用于保存局部变量和函数调用信息,资源占用相对较小。若一个线程崩溃,可能会导致整个进程崩溃。
- 执行特点:
- 进程:进程间的切换需要进行地址空间的切换等一系列复杂操作,开销较大,上下文切换时间长。不同进程间通过进程间通信(IPC)机制,如管道、消息队列、共享内存等来交换数据和同步。
- 线程:线程间的切换只需要保存和恢复少量的寄存器内容,上下文切换开销小,执行效率相对较高。线程间共享进程资源,通信相对容易,但也更容易出现数据竞争和同步问题,需要使用锁、信号量等同步机制来保证数据一致性。