Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/ipc/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  ProcessPriorityManager.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */


#ifndef mozilla_ProcessPriorityManager_h_
#define mozilla_ProcessPriorityManager_h_

#include "mozilla/HalTypes.h"

class nsFrameLoader;

namespace mozilla {
namespace dom {
class BrowserParent;
class CanonicalBrowsingContext;
class ContentParent;
}  // namespace dom

/**
 * This class sets the priority of subprocesses in response to explicit
 * requests and events in the system.
 *
 * A process's priority changes e.g. when it goes into the background via
 * mozbrowser's setVisible(false).  Process priority affects CPU scheduling and
 * also which processes get killed when we run out of memory.
 *
 * After you call Initialize(), the only thing you probably have to do is call
 * SetProcessPriority on processes immediately after creating them in order to
 * set their initial priority.  The ProcessPriorityManager takes care of the
 * rest.
 */

class ProcessPriorityManager final {
 public:
  /**
   * Initialize the ProcessPriorityManager machinery, causing the
   * ProcessPriorityManager to actively manage the priorities of all
   * subprocesses.  You should call this before creating any subprocesses.
   *
   * You should also call this function even if you're in a child process,
   * since it will initialize ProcessPriorityManagerChild.
   */

  static void Init();

  /**
   * Set the process priority of a given ContentParent's process.
   *
   * Note that because this method takes a ContentParent*, you can only set the
   * priority of your subprocesses.  In fact, because we don't support nested
   * content processes (bug 761935), you can only call this method from the
   * main process.
   *
   * It probably only makes sense to call this function immediately after a
   * process is created.  At this point, the process priority manager doesn't
   * have enough context about the processs to know what its priority should
   * be.
   *
   * Eventually whatever priority you set here can and probably will be
   * overwritten by the process priority manager.
   */

  static void SetProcessPriority(dom::ContentParent* aContentParent,
                                 hal::ProcessPriority aPriority);

  /**
   * Returns true iff this process's priority is FOREGROUND*.
   *
   * Note that because process priorities are set in the main process, it's
   * possible for this method to return a stale value.  So be careful about
   * what you use this for.
   */

  static bool CurrentProcessIsForeground();

  /**
   * Updates the contents of mHighPriorityBrowserParents to keep track of
   * the list of TabIds for this process that are high priority.
   */

  static void BrowserPriorityChanged(dom::CanonicalBrowsingContext* aBC,
                                     bool aPriority);
  static void BrowserPriorityChanged(dom::BrowserParent* aBrowserParent,
                                     bool aPriority);

 private:
  ProcessPriorityManager();
  ProcessPriorityManager(const ProcessPriorityManager&) = delete;

  const ProcessPriorityManager& operator=(const ProcessPriorityManager&) =
      delete;
};

}  // namespace mozilla

#endif

Messung V0.5
C=92 H=94 G=92

¤ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.