Лебедкин
Дата: 16.09.2005 09:50:12
Можно ли при написании библиотек использовать в них глобальные переменные? Например для того что бы одной функцией установить значение, а другой прочитать его.
И есть ли разница при работе с ними в Windows & Linux, classic & super server вариантах?
kdv
Дата: 16.09.2005 10:18:20
а почитать www.ibase.ru/ibfaq.htm ? посмотреть примеры udf на сайте?
вообще так можно, только обычно или не нужно или невозможно.
невозможно в classic, потому что там у каждого пользователя свой процесс. и напряжно в superserver, т.к. там количество threads <= количества пользователей, чаще именно меньше. по крайней мере на thread id закладываться нельзя.
Мимопроходящий
Дата: 16.09.2005 11:55:59
Привет, kdv!
Ты пишешь:
kdv |
k> а почитать www.ibase.ru/ibfaq.htm ? посмотреть примеры udf на сайте?
k> вообще так можно, только обычно или не нужно или невозможно. k> невозможно в classic, потому что там у каждого пользователя свой процесс. |
Вообще-то, можно всё. Но решение будет платформно-зависимым.
И если человек не имеет опыта в написании многопоточных
библиотек/приложений, то я бы не советовал "сходу кидаться в воду"...
--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.3
Лебедкин
Дата: 16.09.2005 13:37:47
Мимопроходящий |
Вообще-то, можно всё. Но решение будет платформно-зависимым. И если человек не имеет опыта в написании многопоточных библиотек/приложений, то я бы не советовал "сходу кидаться в воду"...
|
Так с чего то начинать учиться надо.
Вот и думаю: как лучьше сделать библиотеку, которая бы конектилась в TCP сервером и отправляла бы ему посылку байтов.
Причем, как мне кажется тупо каждый раз при вызове функции создавать новый сокет, подсоединяться и потом отсоединяться. Работать на одном соединении логичнее.
Ну и в идеале хотелось бы, что бы это все было платформо-независимым.
kdv
Дата: 16.09.2005 13:39:22
udf? которая коннектится с сервером??? не надо так делать, никогда. в udf должны быть ТОЛЬКО функции преобразования данных, никаких сокетов, коннектов и прочей хрени там быть не должно.
kdv
Дата: 16.09.2005 14:39:39
элементарно. udf это dll. грузится в адресное пространство сервера. выполняется наравне с кодом сервера. Сервер и так тучей вещей оперирует, а ты еще хочешь в его код засунуть какую-нибудь бяку, которая может ввергнуть ВЕСЬ процесс сервера в ступор. Например таймаут по открытию сокета.
Кроме того, если твоя udf запорет память, это может быть чревато порчей базы.
И т.д., и т.п. Обрати внимание на функции, которые лежат на ibase.ru - там нет нигде ничего такого, чего ты хочешь. Обычно то, что ты хочешь, считается проктологическими изысками. Включая тот факт, что udf может вернуть только одно значение.
(это я к тому, что желание коннекта из ЮДФ часто подразумевает обращение к другой базе, выборка данных запросами и т.п.).
более простой путь в таких случаях - написание отдельного приложения, которое будет коннектиться куда надо, и делать то что надо обычным способом.