Главная страница
    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
3-1131542234
RDA
2005-11-09 16:17
2006.01.01
Firebird - Защиты нет?


2-1134822279
Johnnie_pw
2005-12-17 15:24
2006.01.01
Некоторые проблемы с реестром


2-1134501411
Ксардас
2005-12-13 22:16
2006.01.01
Как получить...


2-1134712505
dabreezy
2005-12-16 08:55
2006.01.01
Stack overflow


14-1134028109
Некто
2005-12-08 10:48
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский