Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.146.37.35] |
|
Сообщ.
#1
,
|
|
|
Есть таблица БД - содержащая список заданий.
Есть потоки берущие задания из БД для своей работы. На форме отображена таблица. Каждый поток берет себе задание и отмечает что взятое задание обрабатывается. Пользователь весь процесс может обработки может наблюдать на экране. Надо создать еще одно подключение к БД таблицы с запросом показывающим только свободные задания. Что бы поток взял первое свободное задание из списка. Вопрос 1. Как лучше создать дополнительную таблицу? Одну общею или каждому потоку по экземпляру? Вопрос 2. Каким образом это все синхронизовать что бы потоки не начали работать над одной и той же записью в своем экземпляре. Будет ли достаточно работать через функцию Senhronize или нужно применять что то по сложнее?. |
Сообщ.
#2
,
|
|
|
Решил создать одну общею таблицу и синхронизировать доступ при помощи критической секции.
|
Сообщ.
#3
,
|
|
|
SQL запросы уже не в моде?
|
Сообщ.
#4
,
|
|
|
Подскажите где можно подсмотреть пример. Как поставить задания для потоков в очередь и при помощи симофоров эти задания выполнить нескольким потоками?
Добавлено Цитата mishapk @ SQL запросы уже не в моде? Именно SQL я и собираюсь фильтровать занятые задания. Но хотелось бы найти более грамотный подход не используя БД для списка заданий а применить что то типа очереди сообщений. Хочу разобраться как это можно сделать при помощи семафоров. |
Сообщ.
#5
,
|
|
|
Не нужно мешать все в одну кучу! Разнеси все возникающие вопросы по "зонам ответственности", а именно:
1) Нужна только одна таблица с заданиями, у которой для каждого задания (записи таблицы) есть поле состояния ("Ожидает", "Исполняется", "Готово") 2) Есть выделенный поток, который занимается чтением-записью из базы 3) Есть куча потоков, которые обращаются к потоку 2 с заданиями на работу с базой - "получить задание", "отчитаться об исполнении" 4) Есть GUI-поток, который обращается к потоку 2 с заданием на "обновление таблицы на форме" При таком подходе ты избавишься от блокировок на уровне БД, а это ускорит работу и упростит программинг. Хотя, если исполнение заданий происходит гораздо быстрее работы с базой ... возможны варианты и эксперименты, но если обработка на порядки длительнее, чем работа с БД ... см.п.1-4. Все ИМХО. |
Сообщ.
#6
,
|
|
|
Цитата yashum @ У вас проблема с корневым узлом. Сначала необходимо восстановить эту информационную базу, а потом все подчиненные узлы. Поэтапно, как устранить эту проблему описано тут http://www.modber.ru/catalog/item2059.html . Удачи. Пост ни разу не по теме. "Ненавязчивая реклама" своего сайта по тематике 1С. |