Пусть далее разблокируется еще несколько потоков. Давайте предположим, что на этот момент еще ни один из потоков, находящихся в режиме обработки, еще не завершил свои дела. Ниже приведена таблица, в которой иллюстрируется весь процесс, начиная с исходного состояния:
| Событие | Режим обработки | Режим блокирования | Всего потоков |
|---|---|---|---|
| Исходное состояние | 0 | 1 | 1 |
| Срабатывание триггера lo_water | 0 | 3 | 3 |
| Разблокирование | 1 | 2 | 3 |
| Срабатывание триггера lo_water | 1 | 4 | 5 |
| Разблокирование | 2 | 3 | 5 |
| Разблокирование | 3 | 2 | 5 |
| Срабатывание триггера lo_water | 3 | 4 | 7 |
| Разблокирование | 4 | 3 | 7 |
| Разблокирование | 5 | 2 | 7 |
| Срабатывание триггера lo_water | 5 | 4 | 9 |
| Разблокирование | 6 | 3 | 9 |
| Разблокирование | 7 | 2 | 9 |
| Срабатывание триггера lo_water | 7 | 3 | 10 |
| Разблокирование | 8 | 2 | 10 |
| Разблокирование | 9 | 1 | 10 |
| Разблокирование | 10 | 0 | 10 |
Видно, что библиотека проверяет параметр lo_water, и по мере необходимости увеличивает число потоков на значение параметра increment, но только до тех пор, пока число потоков не достигнет предельного значения — параметра maximum (именно поэтому число в столбце «Всего потоков» никогда не превышает 10, даже когда условие по параметру lo_water перестает выполняться).
Это означает, что однажды наступает момент, когда потоков в режиме блокирования больше не остается. Предположим теперь, что потоки, находящиеся в режиме обработки, завершают свои дела. Посмотрим, что при этом произойдет с триггером параметра hi_water.
| Событие | Режим обработки | Режим блокирования | Всего потоков |
|---|---|---|---|
| Завершение обработки | 9 | 1 | 10 |
| Завершение обработки | 8 | 2 | 10 |
| Завершение обработки | 7 | 3 | 10 |
| Завершение обработки | 6 | 4 | 10 |
| Завершение обработки | 5 | 5 | 10 |
| Завершение обработки | 4 | 6 | 10 |
| Завершение обработки | 3 | 7 | 10 |
| Завершение обработки | 2 | 8 | 10 |
| Срабатывание триггера hi_water | 2 | 7 | 9 |
| Завершение обработки | 1 | 8 | 9 |
| Срабатывание триггера hi_water | 1 | 7 | 9 |
| Завершение обработки | 0 | 8 | 8 |
| Срабатывание триггера hi_water | 0 | 7 | 7 |