1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 module hunt.pool.impl.InterruptibleReentrantLock; 18 19 import hunt.collection.Collection; 20 // import java.util.concurrent.locks.Condition; 21 // import java.util.concurrent.locks.ReentrantLock; 22 23 import core.sync.mutex; 24 import core.sync.condition; 25 26 /** 27 * This sub-class was created to expose the waiting threads so that they can be 28 * interrupted when the pool using the queue that uses this lock is closed. The 29 * class is intended for internal use only. 30 * <p> 31 * This class is intended to be thread-safe. 32 * 33 */ 34 // class InterruptibleReentrantLock : ReentrantLock { 35 36 37 38 // /** 39 // * Create a new InterruptibleReentrantLock with the given fairness policy. 40 // * 41 // * @param fairness true means threads should acquire contended locks as if 42 // * waiting in a FIFO queue 43 // */ 44 // InterruptibleReentrantLock(bool fairness) { 45 // super(fairness); 46 // } 47 48 // /** 49 // * Interrupt the threads that are waiting on a specific condition 50 // * 51 // * @param condition the condition on which the threads are waiting. 52 // */ 53 // void interruptWaiters(Condition condition) { 54 // Collection!(Thread) threads = getWaitingThreads(condition); 55 // foreach(Thread thread ; threads) { 56 // thread.interrupt(); 57 // } 58 // } 59 // }