Mercurial > projects > dwt-addons
diff dwtx/core/internal/jobs/Deadlock.d @ 122:9d0585bcb7aa
Add core.jobs package
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Tue, 12 Aug 2008 02:34:21 +0200 |
parents | |
children | 862b05e0334a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwtx/core/internal/jobs/Deadlock.d Tue Aug 12 02:34:21 2008 +0200 @@ -0,0 +1,52 @@ +/******************************************************************************* + * Copyright (c) 2003, 2006 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + * Port to the D programming language: + * Frank Benoit <benoit@tionex.de> + *******************************************************************************/ +module dwtx.core.internal.jobs.Deadlock; + +import tango.core.Thread; + +import dwt.dwthelper.utils; + +import dwtx.core.runtime.jobs.ISchedulingRule; + +/** + * The deadlock class stores information about a deadlock that just occurred. + * It contains an array of the threads that were involved in the deadlock + * as well as the thread that was chosen to be suspended and an array of locks + * held by that thread that are going to be suspended to resolve the deadlock. + */ +class Deadlock { + //all the threads which are involved in the deadlock + private Thread[] threads; + //the thread whose locks will be suspended to resolve deadlock + private Thread candidate; + //the locks that will be suspended + private ISchedulingRule[] locks; + + public this(Thread[] threads, ISchedulingRule[] locks, Thread candidate) { + this.threads = threads; + this.locks = locks; + this.candidate = candidate; + } + + public ISchedulingRule[] getLocks() { + return locks; + } + + public Thread getCandidate() { + return candidate; + } + + public Thread[] getThreads() { + return threads; + } +}