LINUX.ORG.RU

История изменений

Исправление vbr, (текущая версия) :

Отдаёшь два итератора, которые имеют общий лок и доступ к исходному итератору.

Первый итератор возвращает значения, которые удовлетворяют условию, пока не наткнётся на значение, которое не удовлетворяет. В этот момент итератор блокируется, пока второй итератор не вызовется, не пройдёт по значениям, которые не удовлетворяют условию и не наткнётся на значение, которое удовлетворяет. В этот момент первый итератор разблокируется, а второй заблокируется.

Соответственно использовать эти итераторы нужно в двух разных потоках.

Это всё для Java-подобных итераторов, для которых не предусмотрена работа в неблокирующем режиме (т.е. вернуть специальное значение из разряда «попробуйте позже»).

Исходная версия vbr, :

Отдаёшь два итератора, которые имеют общий лок и доступ к исходному итератору.

Первый итератор возвращает значения, которые удовлетворяют условию, пока не наткнётся на значение, которое не удовлетворяет. В этот момент итератор блокируется, пока второй итератор не вызовется, не пройдёт по значениям, которые не удовлетворяют условию и не наткнётся на значение, которое удовлетворяет. В этот момент первый итератор разблокируется, а второй заблокируется.

Соответственно использовать эти итераторы нужно в двух разных потоках.

Это всё для Java-подобных итераторов, для которых не предусмотрена работа в неблокирующем режиме (т.е. вернуть специальное значение из разряда «попробуйте позже»)/