mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-08 08:45:44 +02:00
[292616] - Added additional synchronization for the fMinStepInterval variable.
This commit is contained in:
parent
58eec98b25
commit
2340eaf2a9
1 changed files with 6 additions and 4 deletions
|
@ -19,6 +19,7 @@ import java.util.Map;
|
||||||
import java.util.concurrent.RejectedExecutionException;
|
import java.util.concurrent.RejectedExecutionException;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
|
import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
||||||
|
@ -134,7 +135,7 @@ public final class SteppingController {
|
||||||
/**
|
/**
|
||||||
* Minimum step interval in milliseconds.
|
* Minimum step interval in milliseconds.
|
||||||
*/
|
*/
|
||||||
private int fMinStepInterval= 0;
|
private AtomicInteger fMinStepInterval= new AtomicInteger(0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map of execution contexts for which a step is in progress.
|
* Map of execution contexts for which a step is in progress.
|
||||||
|
@ -193,7 +194,7 @@ public final class SteppingController {
|
||||||
*/
|
*/
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
public void setMinimumStepInterval(int interval) {
|
public void setMinimumStepInterval(int interval) {
|
||||||
fMinStepInterval = interval;
|
fMinStepInterval.set(interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -314,11 +315,12 @@ public final class SteppingController {
|
||||||
* @return the number of milliseconds before the next possible step
|
* @return the number of milliseconds before the next possible step
|
||||||
*/
|
*/
|
||||||
private int getStepDelay(IExecutionDMContext execCtx) {
|
private int getStepDelay(IExecutionDMContext execCtx) {
|
||||||
if (fMinStepInterval > 0) {
|
int minStepInterval = fMinStepInterval.get();
|
||||||
|
if (minStepInterval > 0) {
|
||||||
for (IExecutionDMContext lastStepCtx : fLastStepTimes.keySet()) {
|
for (IExecutionDMContext lastStepCtx : fLastStepTimes.keySet()) {
|
||||||
if (execCtx.equals(lastStepCtx) || DMContexts.isAncestorOf(execCtx, lastStepCtx)) {
|
if (execCtx.equals(lastStepCtx) || DMContexts.isAncestorOf(execCtx, lastStepCtx)) {
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
int delay= (int) (fLastStepTimes.get(lastStepCtx) + fMinStepInterval - now);
|
int delay= (int) (fLastStepTimes.get(lastStepCtx) + minStepInterval - now);
|
||||||
return Math.max(delay, 0);
|
return Math.max(delay, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue