Опять вопрос про быстродействие. - страница 6

 
Integer:

Можно не копировать весь буфер, а только нужный в даный момент элемент. Пожалуй попробую так делать. Может быть копирование и не быстрее в некоторых случаях, но зато гарантирует неизменные затраты вемени на получение значения индикатора, чем расчет, что там за индикатор будет никто не знает, сколько он потребует времени, а с копированием все понятно. Без операций записи в буфер, это прямой доступ к памяти или создание своего экземпляра индикатора для кажой вызывающей программы? Создание своего экземпляра уже обсудили. Прямой доступ, во первых у индикатора должно быть больше прав на свою память, чем у его пользователей, надо будет использовать семафоры, не знаю что лучше, стоять в очереди, или получить ошибку при копировании и повторить в следующий раз. Кажется было что-то про это здесь, обсуждалось, кажется Слава писал, что пробовали и отказались. Может быть я совсем не о том рассуждаю, может быть вы меня просто перетягиваете в пространство своей специализации, здесь я скромно уступаю пальму первенства. Меня больше интересует как всем этим пользоваться, а не то, каким должен быть идеалный терминал в нашем представлении.

 

Ну это примерно так - на этапе компиляции видно что данный буфер берется ( копируется ) из внешней памяти, из буфера индикатора, таким образом, этому "объекту" ( имя, тип, флаг что это массив и прочее ... - я эти примеры просто так на фантазировал ) ... Ну так вот этому объекту во время компиляции устанавливается флаг, что он ReadOnly, тем более что такой признак должен быть и так ( параметры тоже только для чтения ) и любая операция когда данный объект слева, приводит к ошибке. Понятно что при передаче этого объекта в качестве  параметров куда то еще - приводит к наследованию его свойств. Ну таким образом - любая попытка записи будет пресечена, еще до выполнение. Можно конечно выдавать предупреждения и просто не генерировать код который производит запись. Но лучше рубить на ошибку и все. Многие такие вещь можно сильно ускорить с таким подходом, даже тоже частичное копирование, можно сделать при сохранении readonly ,  я правда не стал бы давать такую функцию вообще - я бы сделал бы, вместо функции Copy  функцию которую бы назвал - "mapping" и наглядно и понятно что не копирование. Что касается семафоров, то тут когда есть только один писатель и много читателей можно сделать быстро. Но все равно семафоры это прошлый век.