📄 natfinalizerthread.cc
字号:
// natFinalizerThread.cc - Implementation of FinalizerThread native methods./* Copyright (C) 2001, 2004 Free Software Foundation This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License. Please consult the file "LIBGCJ_LICENSE" fordetails. */#include <config.h>#include <gcj/cni.h>#include <jvm.h>#include <gnu/gcj/runtime/FinalizerThread.h>#include <java-threads.h>static _Jv_Mutex_t mutex;static _Jv_ConditionVariable_t condition;// Initialize lock & condition variable.voidgnu::gcj::runtime::FinalizerThread::init (){ _Jv_MutexInit (&mutex); _Jv_CondInit (&condition);}// This is called by the GC when a finalizer is ready to be// run. It sets a flag and wakes up the finalizer thread. Note// that this MUST NOT aquire any Java lock, as this could result in // the hash synchronization code being re-entered: the synchronization// code itself might need to allocate. See PR 16478.voidgnu::gcj::runtime::FinalizerThread::finalizerReady (){#ifdef __JV_NO_THREADS__ _Jv_RunFinalizers ();#else _Jv_MutexLock (&mutex); finalizer_ready = true; _Jv_CondNotify (&condition, &mutex); _Jv_MutexUnlock (&mutex);#endif}// Main loop for the finalizer thread. voidgnu::gcj::runtime::FinalizerThread::run (){ while (true) { _Jv_MutexLock (&mutex); if (! finalizer_ready) _Jv_CondWait (&condition, &mutex, 0, 0); finalizer_ready = false; _Jv_MutexUnlock (&mutex); _Jv_RunFinalizers (); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -