зеркало из https://github.com/mozilla/gecko-dev.git
325 строки
11 KiB
HTML
325 строки
11 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
|
<!--NewPage-->
|
|
<HTML>
|
|
<HEAD>
|
|
<!-- Generated by javadoc on Sun Aug 01 23:07:09 MDT 1999 -->
|
|
<TITLE>
|
|
: Class RWLock
|
|
</TITLE>
|
|
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
|
|
</HEAD>
|
|
<BODY BGCOLOR="white">
|
|
|
|
<!-- ========== START OF NAVBAR ========== -->
|
|
<A NAME="navbar_top"><!-- --></A>
|
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
|
|
<TR>
|
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
|
|
<A NAME="navbar_top_firstrow"><!-- --></A>
|
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
|
|
<TR ALIGN="center" VALIGN="top">
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> <FONT ID="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
|
</TR>
|
|
</TABLE>
|
|
</TD>
|
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
|
</EM>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../calypso/util/Recycler.html"><B>PREV CLASS</B></A>
|
|
<A HREF="../../calypso/util/SelfTest.html"><B>NEXT CLASS</B></A></FONT></TD>
|
|
<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../index.html" TARGET="_top"><B>FRAMES</B></A>
|
|
<A HREF="RWLock.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
|
|
</TR>
|
|
<TR>
|
|
<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
|
|
SUMMARY: INNER | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
|
<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
|
|
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<!-- =========== END OF NAVBAR =========== -->
|
|
|
|
<HR>
|
|
<!-- ======== START OF CLASS DATA ======== -->
|
|
<H2>
|
|
<FONT SIZE="-1">
|
|
calypso.util</FONT>
|
|
<BR>
|
|
Class RWLock</H2>
|
|
<PRE>
|
|
java.lang.Object
|
|
|
|
|
+--<B>calypso.util.RWLock</B>
|
|
</PRE>
|
|
<HR>
|
|
<DL>
|
|
<DT>public final class <B>RWLock</B><DT>extends java.lang.Object</DL>
|
|
|
|
<P>
|
|
A "read-write" lock. This lock allows for an arbitrary number of
|
|
simultaneous readers. The lock can be upgraded to a write lock in two
|
|
ways. First, the lock can be upgraded without guaranteeing invariance
|
|
across the transition (in other words, the read lock may need to be
|
|
released before the write lock can be acquired). The other form of
|
|
upgrade guarantees invariance; however, the upgrade can only be
|
|
performed by initially locking the lock using the invariant read lock
|
|
enter method. Upgrading the lock in either case involves waiting until
|
|
there are no more readers. This implementation gives priority to
|
|
upgrades and invariant locks which may lead to reader starvation. <p>
|
|
|
|
Each thread using the lock may re-enter the lock as many times as
|
|
needed. However, attempting to re-enter the lock with the invariant
|
|
read lock will fail unless the lock was originally entered that way by
|
|
the invoking thread. <p>
|
|
|
|
Only one thread may enter the invariant read lock at a time; other
|
|
threads attempting this will block until the owning thread exits the
|
|
lock completely. <p>
|
|
|
|
Note that the implementation assumes that the user of instances of
|
|
this class properly pairs the enters/exits. <p>
|
|
<P>
|
|
<HR>
|
|
|
|
<P>
|
|
<!-- ======== INNER CLASS SUMMARY ======== -->
|
|
|
|
|
|
<!-- =========== FIELD SUMMARY =========== -->
|
|
|
|
|
|
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
|
|
|
<A NAME="constructor_summary"><!-- --></A>
|
|
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
|
|
<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
|
|
<TD COLSPAN=2><FONT SIZE="+2">
|
|
<B>Constructor Summary</B></FONT></TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD><CODE><B><A HREF="../../calypso/util/RWLock.html#RWLock()">RWLock</A></B>()</CODE>
|
|
|
|
<BR>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<!-- ========== METHOD SUMMARY =========== -->
|
|
|
|
<A NAME="method_summary"><!-- --></A>
|
|
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
|
|
<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
|
|
<TD COLSPAN=2><FONT SIZE="+2">
|
|
<B>Method Summary</B></FONT></TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> void</CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../calypso/util/RWLock.html#enterInvariantReadLock()">enterInvariantReadLock</A></B>()</CODE>
|
|
|
|
<BR>
|
|
Enter the invariant read lock.</TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> void</CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../calypso/util/RWLock.html#enterReadLock()">enterReadLock</A></B>()</CODE>
|
|
|
|
<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> void</CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../calypso/util/RWLock.html#enterWriteLock()">enterWriteLock</A></B>()</CODE>
|
|
|
|
<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> void</CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../calypso/util/RWLock.html#exitInvariantReadLock()">exitInvariantReadLock</A></B>()</CODE>
|
|
|
|
<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> void</CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../calypso/util/RWLock.html#exitReadLock()">exitReadLock</A></B>()</CODE>
|
|
|
|
<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> void</CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../calypso/util/RWLock.html#exitWriteLock()">exitWriteLock</A></B>()</CODE>
|
|
|
|
<BR>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
|
|
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
|
|
<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
|
|
<TD><B>Methods inherited from class java.lang.Object</B></TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" ID="TableRowColor">
|
|
<TD><CODE>clone,
|
|
equals,
|
|
finalize,
|
|
getClass,
|
|
hashCode,
|
|
notify,
|
|
notifyAll,
|
|
toString,
|
|
wait,
|
|
wait,
|
|
wait</CODE></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<P>
|
|
|
|
<!-- ============ FIELD DETAIL =========== -->
|
|
|
|
|
|
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
|
|
|
<A NAME="constructor_detail"><!-- --></A>
|
|
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
|
|
<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
|
|
<TD COLSPAN=1><FONT SIZE="+2">
|
|
<B>Constructor Detail</B></FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<A NAME="RWLock()"><!-- --></A><H3>
|
|
RWLock</H3>
|
|
<PRE>
|
|
public <B>RWLock</B>()</PRE>
|
|
<DL>
|
|
</DL>
|
|
|
|
<!-- ============ METHOD DETAIL ========== -->
|
|
|
|
<A NAME="method_detail"><!-- --></A>
|
|
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
|
|
<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
|
|
<TD COLSPAN=1><FONT SIZE="+2">
|
|
<B>Method Detail</B></FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<A NAME="enterReadLock()"><!-- --></A><H3>
|
|
enterReadLock</H3>
|
|
<PRE>
|
|
public void <B>enterReadLock</B>()
|
|
throws java.lang.InterruptedException</PRE>
|
|
<DL>
|
|
</DL>
|
|
<HR>
|
|
|
|
<A NAME="exitReadLock()"><!-- --></A><H3>
|
|
exitReadLock</H3>
|
|
<PRE>
|
|
public void <B>exitReadLock</B>()</PRE>
|
|
<DL>
|
|
</DL>
|
|
<HR>
|
|
|
|
<A NAME="enterInvariantReadLock()"><!-- --></A><H3>
|
|
enterInvariantReadLock</H3>
|
|
<PRE>
|
|
public void <B>enterInvariantReadLock</B>()
|
|
throws java.lang.InterruptedException</PRE>
|
|
<DL>
|
|
<DD>Enter the invariant read lock. Only one thread at a time can hold
|
|
the invariant read lock. This lock guarantees to upgrade to a write
|
|
lock without needing to release the read lock.</DL>
|
|
<HR>
|
|
|
|
<A NAME="exitInvariantReadLock()"><!-- --></A><H3>
|
|
exitInvariantReadLock</H3>
|
|
<PRE>
|
|
public void <B>exitInvariantReadLock</B>()</PRE>
|
|
<DL>
|
|
</DL>
|
|
<HR>
|
|
|
|
<A NAME="enterWriteLock()"><!-- --></A><H3>
|
|
enterWriteLock</H3>
|
|
<PRE>
|
|
public void <B>enterWriteLock</B>()
|
|
throws java.lang.InterruptedException</PRE>
|
|
<DL>
|
|
</DL>
|
|
<HR>
|
|
|
|
<A NAME="exitWriteLock()"><!-- --></A><H3>
|
|
exitWriteLock</H3>
|
|
<PRE>
|
|
public void <B>exitWriteLock</B>()</PRE>
|
|
<DL>
|
|
</DL>
|
|
<!-- ========= END OF CLASS DATA ========= -->
|
|
<HR>
|
|
|
|
<!-- ========== START OF NAVBAR ========== -->
|
|
<A NAME="navbar_bottom"><!-- --></A>
|
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
|
|
<TR>
|
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
|
|
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
|
|
<TR ALIGN="center" VALIGN="top">
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> <FONT ID="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" ID="NavBarCell1"> <A HREF="../../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
|
</TR>
|
|
</TABLE>
|
|
</TD>
|
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
|
</EM>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../calypso/util/Recycler.html"><B>PREV CLASS</B></A>
|
|
<A HREF="../../calypso/util/SelfTest.html"><B>NEXT CLASS</B></A></FONT></TD>
|
|
<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../index.html" TARGET="_top"><B>FRAMES</B></A>
|
|
<A HREF="RWLock.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
|
|
</TR>
|
|
<TR>
|
|
<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
|
|
SUMMARY: INNER | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
|
<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
|
|
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<!-- =========== END OF NAVBAR =========== -->
|
|
|
|
<HR>
|
|
|
|
</BODY>
|
|
</HTML>
|