复制对象的多线程策略
在分布式系统中,多线程调度策略对于复制对象的高效运行至关重要。本文将介绍几种多线程调度算法及其扩展,并通过实验评估它们的性能。
1. PDS算法概述
PDS(Periodic Deterministic Scheduling)算法中,互斥请求会使线程挂起,当所有线程都挂起时,会开启新的一轮调度。在一轮执行过程中,线程数量是固定的,只有在新的一轮开始时,才可以创建或移除线程,并且需要有确定的规则来改变线程集合。
PDS算法的优点是在为线程分配互斥锁时无需通信,适用于所有线程重复执行锁请求,且计算时间大致相同的情况。然而,它也有两个主要缺点:
- 只要有一个线程未能请求互斥锁,就无法开启新的一轮。
- 每一轮开始时,必须确定线程的数量,新请求需要映射到固定大小的线程池。如果没有新请求,系统无法开启新的一轮。解决这个问题的唯一方法是在客户端请求不频繁时,确定性地创建人工请求。
2. 扩展LSA和PDS算法
为了支持包含可重入锁、嵌套调用、条件变量和有时间限制的等待操作的系统模型,我们对LSA(Leader-based Scheduling Algorithm)和PDS算法进行了扩展。
2.1 扩展LSA到ADETS-LSA
- 嵌套调用 :在LSA算法的实现中,嵌套调用不需要专门的支持,因为它不影响互斥锁的分配顺序,等待嵌套调用回复的线程不会影响其他线程的进度。
- 无时间限制的条件变量 :在LSA中,无时间限制的条件变量不会产生问题。
w