273 |
|
} |
274 |
|
count = 0; |
275 |
|
node = enq(-remaining); |
276 |
< |
} |
277 |
< |
finally { |
276 |
> |
} finally { |
277 |
|
lock.unlock(); |
278 |
|
} |
279 |
|
|
281 |
|
try { |
282 |
|
while (node.permitsNeeded > 0) |
283 |
|
node.done.await(); |
284 |
< |
} |
286 |
< |
catch(InterruptedException ie) { |
284 |
> |
} catch(InterruptedException ie) { |
285 |
|
if (node.permitsNeeded > 0) { |
286 |
|
node.cancelled = true; |
287 |
|
release(permits - node.permitsNeeded); |
288 |
|
throw ie; |
289 |
< |
} |
292 |
< |
else { // ignore interrupt |
289 |
> |
} else { // ignore interrupt |
290 |
|
Thread.currentThread().interrupt(); |
291 |
|
} |
292 |
< |
} |
296 |
< |
finally { |
292 |
> |
} finally { |
293 |
|
node.unlock(); |
294 |
|
} |
295 |
|
} |
330 |
|
} |
331 |
|
count = 0; |
332 |
|
node = enq(-remaining); |
333 |
< |
} |
338 |
< |
finally { |
333 |
> |
} finally { |
334 |
|
lock.unlock(); |
335 |
|
} |
336 |
|
|
338 |
|
try { |
339 |
|
while (node.permitsNeeded > 0) |
340 |
|
node.done.awaitUninterruptibly(); |
341 |
< |
} |
347 |
< |
finally { |
341 |
> |
} finally { |
342 |
|
node.unlock(); |
343 |
|
} |
344 |
|
} |
370 |
|
return true; |
371 |
|
} |
372 |
|
return false; |
373 |
< |
} |
380 |
< |
finally { |
373 |
> |
} finally { |
374 |
|
lock.unlock(); |
375 |
|
} |
376 |
|
} |
440 |
|
return false; |
441 |
|
count = 0; |
442 |
|
node = enq(-remaining); |
443 |
< |
} |
451 |
< |
finally { |
443 |
> |
} finally { |
444 |
|
lock.unlock(); |
445 |
|
} |
446 |
|
|
454 |
|
} |
455 |
|
} |
456 |
|
return true; |
457 |
< |
} |
466 |
< |
catch(InterruptedException ie) { |
457 |
> |
} catch(InterruptedException ie) { |
458 |
|
if (node.permitsNeeded > 0) { |
459 |
|
node.cancelled = true; |
460 |
|
release(permits - node.permitsNeeded); |
461 |
|
throw ie; |
462 |
< |
} |
472 |
< |
else { // ignore interrupt |
462 |
> |
} else { // ignore interrupt |
463 |
|
Thread.currentThread().interrupt(); |
464 |
|
return true; |
465 |
|
} |
466 |
< |
} |
477 |
< |
finally { |
466 |
> |
} finally { |
467 |
|
node.unlock(); |
468 |
|
} |
469 |
|
} |
507 |
|
if (node == null) { |
508 |
|
count += p; |
509 |
|
p = 0; |
510 |
< |
} |
522 |
< |
else { |
510 |
> |
} else { |
511 |
|
node.lock(); |
512 |
|
try { |
513 |
|
if (node.cancelled) |
515 |
|
else if (node.permitsNeeded > p) { |
516 |
|
node.permitsNeeded -= p; |
517 |
|
p = 0; |
518 |
< |
} |
531 |
< |
else { |
518 |
> |
} else { |
519 |
|
p -= node.permitsNeeded; |
520 |
|
node.permitsNeeded = 0; |
521 |
|
node.done.signal(); |
522 |
|
removeFirst(); |
523 |
|
} |
524 |
< |
} |
538 |
< |
finally { |
524 |
> |
} finally { |
525 |
|
node.unlock(); |
526 |
|
} |
527 |
|
} |
528 |
|
} |
529 |
< |
} |
544 |
< |
finally { |
529 |
> |
} finally { |
530 |
|
lock.unlock(); |
531 |
|
} |
532 |
|
} |