/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 sts=2 et cindent: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" [ptr] native PRThread(PRThread); interface nsIThread; /** * An interface for creating and locating nsIThread instances. */ [scriptable, uuid(1be89eca-e2f7-453b-8d38-c11ba247f6f3)] interface nsIThreadManager : nsISupports { /** * Default number of bytes reserved for a thread's stack, if no stack size * is specified in newThread(). 0 means use platform default. */ const unsigned long DEFAULT_STACK_SIZE = 0; /** * Create a new thread (a global, user PRThread). * * @param creationFlags * Reserved for future use. Pass 0. * @param stackSize * Number of bytes to reserve for the thread's stack. * * @returns * The newly created nsIThread object. */ nsIThread newThread(in unsigned long creationFlags, [optional] in unsigned long stackSize); /** * Get the nsIThread object (if any) corresponding to the given PRThread. * This method returns null if there is no corresponding nsIThread. * * @param prthread * The PRThread of the nsIThread being requested. * * @returns * The nsIThread object corresponding to the given PRThread or null if no * such nsIThread exists. */ [noscript] nsIThread getThreadFromPRThread(in PRThread prthread); /** * Get the main thread. */ readonly attribute nsIThread mainThread; /** * Get the current thread. If the calling thread does not already have a * nsIThread associated with it, then a new nsIThread will be created and * associated with the current PRThread. */ readonly attribute nsIThread currentThread; /** * This attribute is true if the calling thread is the main thread of the * application process. */ readonly attribute boolean isMainThread; };