Re: Быстрый поиск свободного порта
От: watch-maker  
Дата: 06.05.13 20:36
Оценка: 5 (2)
Здравствуйте, -prus-, Вы писали:

P>Подскажите плиз (может уже обсуждалось) чего почитать или механизм, который позволит максимально быстро ваще прям за минимум тактов искать свободный порт в диапазоне?

Непонятно. Диапазон считается известным изначально и не меняется во время работы? Или каждый запрос на поиск содержит свой уникальный диапазон (то есть сначала идёт запрос на поиск свободного порта только из диапазона [a, b], а затем только из диапазона [c, d] для произвольных значений переменных a-d)?
В первом случае стек (или очередь) со всеми свободными адресами хорошо подойдет. Операция Pop — взять и пометить как занятый, Push — пометить как свободный.
Во втором случае можно использовать древовидные структура данных — trie или дерево сегментов (вот похожий пример использования). Разумеется так как максимальное значение адреса известно и ограничено небольшим числом, то вся структура просто делается статической и занимает чуть больше битового массива соответствующей длины.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.