src/java.base/windows/classes/sun/nio/ch/Iocp.java

Print this page
rev 12972 : 8140606: Update library code to use internal Unsafe
Reviewed-by: duke


  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package sun.nio.ch;
  27 
  28 import java.nio.channels.*;
  29 import java.nio.channels.spi.AsynchronousChannelProvider;
  30 import java.io.Closeable;
  31 import java.io.IOException;
  32 import java.io.FileDescriptor;
  33 import java.util.*;
  34 import java.util.concurrent.*;
  35 import java.util.concurrent.locks.ReadWriteLock;
  36 import java.util.concurrent.locks.ReentrantReadWriteLock;
  37 import java.security.AccessController;
  38 import sun.security.action.GetPropertyAction;
  39 import sun.misc.Unsafe;
  40 
  41 /**
  42  * Windows implementation of AsynchronousChannelGroup encapsulating an I/O
  43  * completion port.
  44  */
  45 
  46 class Iocp extends AsynchronousChannelGroupImpl {
  47     private static final Unsafe unsafe = Unsafe.getUnsafe();
  48     private static final long INVALID_HANDLE_VALUE  = -1L;
  49     private static final boolean supportsThreadAgnosticIo;
  50 
  51     // maps completion key to channel
  52     private final ReadWriteLock keyToChannelLock = new ReentrantReadWriteLock();
  53     private final Map<Integer,OverlappedChannel> keyToChannel =
  54         new HashMap<Integer,OverlappedChannel>();
  55     private int nextCompletionKey;
  56 
  57     // handle to completion port
  58     private final long port;
  59 




  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package sun.nio.ch;
  27 
  28 import java.nio.channels.*;
  29 import java.nio.channels.spi.AsynchronousChannelProvider;
  30 import java.io.Closeable;
  31 import java.io.IOException;
  32 import java.io.FileDescriptor;
  33 import java.util.*;
  34 import java.util.concurrent.*;
  35 import java.util.concurrent.locks.ReadWriteLock;
  36 import java.util.concurrent.locks.ReentrantReadWriteLock;
  37 import java.security.AccessController;
  38 import sun.security.action.GetPropertyAction;
  39 import jdk.internal.misc.Unsafe;
  40 
  41 /**
  42  * Windows implementation of AsynchronousChannelGroup encapsulating an I/O
  43  * completion port.
  44  */
  45 
  46 class Iocp extends AsynchronousChannelGroupImpl {
  47     private static final Unsafe unsafe = Unsafe.getUnsafe();
  48     private static final long INVALID_HANDLE_VALUE  = -1L;
  49     private static final boolean supportsThreadAgnosticIo;
  50 
  51     // maps completion key to channel
  52     private final ReadWriteLock keyToChannelLock = new ReentrantReadWriteLock();
  53     private final Map<Integer,OverlappedChannel> keyToChannel =
  54         new HashMap<Integer,OverlappedChannel>();
  55     private int nextCompletionKey;
  56 
  57     // handle to completion port
  58     private final long port;
  59