Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];

Вниз

Проблема с FB 1.5 и IBX   Найти похожие ветки 

 
Zoostal   (2005-11-11 12:05) [0]

Здравствуйте!

У меня такая проблема. В программе создается 3 потока - №1 постоянно смотрит базу на предмет новых заданий, №2 получает задание от №1, выполняет его и пытается с помощью потока №3 положить результат в базу.

В общем с базой работают потоки №1 и №3. При этом №1 опрашивает базу в цикле с определенной (частой переодичностью), а поток №3 выполняет запись в базу редко (примерно раз в минуту). В обоих потоках идет динамическое создание подключения к БД, то есть создается TIBDataBase и свои TIBTable и TIBQuery.

Проблема заключается в том что когда поток №3 начинает что-то класть в базу то все встает. То есть на строчке, например,  

PJExTable.Open;

дальше код не исполняется. Если на время записи потоком №3 в базу данных поток №1 остановить с помощью Suspend то вроде все срабатывает, но это не вариант.

Как решить эту проблему ? Может быть есть какая-то настройка ? что-то типа монопольного доступа внутри приложения или что-то еще...


 
Курдль ©   (2005-11-11 12:24) [1]


> Проблема заключается в том что когда поток №3 начинает что-
> то класть в базу то все встает. То есть на строчке, например,
> PJExTable.Open;


Во-первых - ничего никогда не "класть в базу" с помощью ...Table.Open;

А конечная-то задача какая? Что-то мне не ндравится При этом №1 опрашивает базу в цикле с определенной (частой переодичностью)


 
Noosfert   (2005-11-11 12:30) [2]

Это был пример на чем все встает. При работе  с запросами тоже встает.


 
Digitman ©   (2005-11-11 12:31) [3]


> В обоих потоках идет динамическое создание подключения к
> БД, то есть создается TIBDataBase и свои TIBTable и TIBQuery


а TIBTransaction ?


 
Noosfert   (2005-11-11 12:33) [4]

Digitman

и TIBTransaction конечно тоже. Вот с такими параметрами

PJTrans.Params.Add("read_committed");
PJTrans.Params.Add("rec_version");
PJTrans.Params.Add("nowait");


 
Курдль ©   (2005-11-11 12:39) [5]


> Zoostal   (11.11.05 12:05)


Может быть все-таки объясните, зачем кому-то на клиенте периодически опрашивать базу?
Мне в жизни такое не приходило в голову, а вдруг я что-то важное упустил?  :-(


 
Noosfert   (2005-11-11 12:43) [6]

в базе есть таблица ExTable, которая отвечает за то что один клиент в неё кладет задание, а другой постоянно смотрит появились ли они эти задания, забирает их, выполняет и возвращает через базу результат.


 
Курдль ©   (2005-11-11 12:55) [7]

В Вашем описании "клиент" - это человек?
В IB/FB есть инструментарий системных событий? Если нет, то не применить ли трехзвенку, где сервер приложений будет оповещать нужного клиента о наступлении события типа "пришло задание".


 
Noosfert   (2005-11-11 13:02) [8]

Всем спасибо за советы и участие, проблема наконец разрешилась. База не должна быть локальной оказывается. Доступ через localhost спас :)


 
Digitman ©   (2005-11-11 13:02) [9]


> Noosfert


3-хзвенка тебе нужна.

IBEvents - плохое решение


 
Курдль ©   (2005-11-11 13:03) [10]


> Noosfert   (11.11.05 13:02) [8]
> проблема наконец разрешилась.


Очень сильно в этом сомневаюсь :-(



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
6-1127191086
Islander
2005-09-20 08:38
2006.01.01
Delphi и веб-сервис: как передать русские строки?


2-1134307926
WebSQLNeeder
2005-12-11 16:32
2006.01.01
Как узнать путь к программе где она находится в данный момент?


14-1133786020
Kerk
2005-12-05 15:33
2006.01.01
Поисковая система Kazzoom вступает в гонку с Yahoo! и Google


5-1118311356
grvakh
2005-06-09 14:02
2006.01.01
Ошибка при помещении компоненты на форму


9-1122544019
java73
2005-07-28 13:46
2006.01.01
поиск пути





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский