СПОСОБ ОПТИМИЗАЦИИ РАБОТЫ СО СВЯЗНЫМИ СПИСКАМИ

1. Способ предоставления процессам чтения непрерывного доступа к связному списку, который содержит один процесс записи и, по крайней мере, один процесс чтения, и в котором при удалении элемента списка:
все процессы чтения без ожидания получают доступ к списку и разделяются на процессы чтения, которые начали работу со списком до того, как процесс записи перешел к последнему элементу списка, и на процессы чтения, которые начали работу со списком после того, как процесс записи перешел к последнему элементу списка, при этом:
а) процессы чтения, которые начали работу со списком до того, как процесс записи перешел к последнему элементу списка, выполняются для количества элементов списка, содержащих последний элемент;
б) процессы чтения, которые начали работу со списком после того, как процесс записи перешел к последнему элементу списка, выполняются для количества элементов списка, не содержащих последний элемент;
при этом процесс записи удаляет последний элемент списка только после того, как все процессы чтения, которые начали работу со списком до того, как процесс записи перешел к последнему элементу, закончили работу со списком.
2. Способ по п.1, в котором процесс записи перемещает элемент, который необходимо удалить, в конец списка в случае, если элемент, который необходимо удалить, не является последним в списке.
3. Способ по п.1, в котором процесс записи также производит логическое удаление элемента списка путем пометки элемента удаленным, при этом данные логически удаленного элемента списка игнорируются процессом чтения, и элемент остается в списке.
4. Способ предоставления процессам чтения непрерывного доступа к связному списку, который содержит один процесс записи и, по крайней мере, один процесс чтения, и в котором при добавлении нового элемента списка:
все процессы чтения без ожидания получают доступ к списку и разделяются на процессы чтения, которые начали работу со списком до добавления нового элемента, и на процессы чтения, которые начали работу со списком после добавления нового элемента, при этом:
а) процессы чтения, которые начали работу со списком до добавления нового элемента, выполняются для количества элементов списка, не содержащих добавляемый элемент;
б) процессы чтения, которые начали работу со списком после добавления нового элемента, выполняются для количества элементов списка, содержащих добавленный элемент.
5. Способ по п.4, в котором процесс записи добавляет новый элемент в конец списка, в случае, если в списке нет логически удаленного элемента.
6. Способ по п.4, в котором процесс записи добавляет новый элемент путем копирования данных нового элемента в логически удаленный элемент и снятия с логически удаленного элемента пометки удаленным, в случае если в списке присутствует логически удаленный элемент.