Top


定義場所(file name)

hotspot/src/os/solaris/vm/attachListener_solaris.cpp

名前(function name)

AttachOperation* AttachListener::dequeue() {

本体部(body)

  {- -------------------------------------------
  (1) (変数宣言など)
      ---------------------------------------- -}

      JavaThread* thread = JavaThread::current();

  {- -------------------------------------------
  (1) ThreadBlockInVM で JavaThread の状態を変更しておく.
      ---------------------------------------- -}

      ThreadBlockInVM tbivm(thread);

  {- -------------------------------------------
  (1) 
      ---------------------------------------- -}

      thread->set_suspend_equivalent();
      // cleared by handle_special_suspend_equivalent_condition() or
      // java_suspend_self() via check_and_wait_while_suspended()

  {- -------------------------------------------
  (1) SolarisAttachListener::dequeue() を呼んで
      クライアントプロセスから次のリクエストを受け取る.
      ---------------------------------------- -}

      AttachOperation* op = SolarisAttachListener::dequeue();

  {- -------------------------------------------
  (1) 待っている間に java.lang.Thread.suspend() で suspend 状態にされているかもしれないので, 
      JavaThread::check_and_wait_while_suspended() でチェックしておく.
      もし suspend されていれば, この中で resume されるまで待機する
      (See: java.lang.Thread.suspend())
      ---------------------------------------- -}

      // were we externally suspended while we were waiting?
      thread->check_and_wait_while_suspended();

  {- -------------------------------------------
  (1) 結果をリターン
      ---------------------------------------- -}

      return op;
    }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.