Может ли FB Embedded использоваться в потоках, без сериализации. в одном и том же запущенном приложении.
если мы создаем в программе для каждого потока свое локальное (НЕ сетевое ) соединения с базой.
Просто непонятное поведение получается FB. и в частности FIBPlus.
1. Если просто создать приложение запустить FB естественно вторую копию программы не даст запустить (скажет не к файлу доступа.)
все ок так и должно быть.
2. Если в приложении создать два локальных соединения с базой программа запустится и все будет работать. ПОЧЕМУ ведь FB в теории должен блокировать второе ЛОКАЛЬНОЕ соединение?
Хотя можно предположить что там приложение создает полноценный сервер и все работает.
тогда проблема судя по данным FIBPlus локально вообще нельзя в потоках соединятся, а сетевого соединения к localhost Embedded не дает сделать.
http://www.devrace.com/ru/fibplus/articles/2774.php
Как быть?
Везде какая-то противоречивая информация.
http://www.ibase.ru/ibfaq.htm#embedded
Пример создали приложение
Embedded FB и потоки.
это почему? разве сервер не дает возможности сделать к базе 2 коннекта? допустим, embedded это сервер в dll. ну и что? Какой "теории" противоречит 2-3-4 соединения из одного и того же exe?Если в приложении создать два локальных соединения с базой программа запустится и все будет работать. ПОЧЕМУ ведь FB в теории должен блокировать второе ЛОКАЛЬНОЕ соединение?
что именно противоречивого? Есть ряд правил, которые существуют для клиента в отношении threads, и есть доп. правила для Embedded.Везде какая-то противоречивая информация.
http://www.ibase.ru/ibfaq.htm#embedded
1. для работы в threads надо использовать коннект на каждый thread.
2. embedded не дает подсоединиться к базе двум exe. потому что два сервера не могут подсоединиться одновременно к одной БД.
все.
Спасибо большое.
Вот противоречие.
http://www.devrace.com/ru/fibplus/articles/2774.php
2. Коннекты не должны быть локальными, т.е. коннектиться надо через TCP/IP
Все эти требования накладывает не FIBPlus, а InterBase и Firebird.
А Embedded то не дает сделать сетевое подключение.
Так получается Пункт №2 это ошибка, опечатка fibplus ,
И можно ЛОКАЛЬНО в потоках соединятся?
при условии.
1. один EXE
2. для работы в threads надо использовать коннект на каждый thread.
Вот противоречие.
http://www.devrace.com/ru/fibplus/articles/2774.php
2. Коннекты не должны быть локальными, т.е. коннектиться надо через TCP/IP
Все эти требования накладывает не FIBPlus, а InterBase и Firebird.
А Embedded то не дает сделать сетевое подключение.
Так получается Пункт №2 это ошибка, опечатка fibplus ,
И можно ЛОКАЛЬНО в потоках соединятся?
при условии.
1. один EXE
2. для работы в threads надо использовать коннект на каждый thread.
дает. к внешнему серверу.А Embedded то не дает сделать сетевое подключение.
а статья эта написана просто без учета embedded. под "локальным" коннектом там имелся в виду старый протокол клиента, когда действительно распараллеливание РАБОТЫ локальных коннектов не производилось СЕРВЕРОМ. Embedded это вообще не то, там нет никакого "локального коннекта" в терминах обычного gds32.dll.
можно, если это embedded, или если это обычный клиент (ya, FB 2) с поддержкой локального протокола xnet.И можно ЛОКАЛЬНО в потоках соединятся?