|
|
|
Преимущества и недостатки нескольких сессий подключения
|
|||
|---|---|---|---|
|
#18+
Delphi7: Если у меня приложение состоит из нескольких параллельных потоков, то как лучше сделать: Одну сессию на все потоки или каждому потоку - свою сессию? Если одна сессия на всех, то как можно передать её разным потокам - ведь потоки используют разные области памяти Если несколько сессий, то я слышал о каких-то проблемах в подтверждении изменений БД... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2003, 18:40 |
|
||
|
Преимущества и недостатки нескольких сессий подключения
|
|||
|---|---|---|---|
|
#18+
Если у тебя действительно независимые параллельные потоки, то я думаю лучше действительно через несколько сессий. Если независимые потоки - окошки, то одна сессия на всех. Методика передачи сессии от потока к потоку зависит от языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2003, 08:54 |
|
||
|
Преимущества и недостатки нескольких сессий подключения
|
|||
|---|---|---|---|
|
#18+
Проблема в разделении транзакций. Если одна форма (окошко) хочет сохранять в базе независимо от другой - надо разделять сессии. Если все - в одну транзакцию - запускать в одной. На эту тему проектировщики должны все рассказывать программистам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2003, 10:06 |
|
||
|
Преимущества и недостатки нескольких сессий подключения
|
|||
|---|---|---|---|
|
#18+
Конечно все зависит от задачи, но вот одно соображение: Разные сессии изолированы друг от друга и не видят незакоммиченных изменений друг друга. Если это не проблема - хорошо. И еще, мне кажется что иметь несколько потоков с сессией в каждом - это лишнее. Возможно лучше иметь один поток, работающий с БД и получающий задания от клиентских потоков, которые ставяться ему в очередь. Возможно. Так как у тебя прога уже написана и возможно сильно править ее нет желания - тогда наверно лучше использовать несколько сессий - не будет гемора с доступом к глобальной, в противном случае, сессии. Не надо будет критические секции раскидывать и все такое. Если работа идет через ADO, то это даже не слишком накладно будет из-за пулинга сессий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2003, 10:24 |
|
||
|
Преимущества и недостатки нескольких сессий подключения
|
|||
|---|---|---|---|
|
#18+
Всё ясно. Всем спасибо. А вот незакоммиченные изменения - для меня плохо Проблем с передачей сессии потокам не возникло, но возникла проблема с одновременным обращением к сессии нескольких потоков. Что там с критическими секциями? Подскажите, как сделать, чтобы один поток ждал другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2003, 14:20 |
|
||
|
Преимущества и недостатки нескольких сессий подключения
|
|||
|---|---|---|---|
|
#18+
Проблем с передачей сессии потокам не возникло, но возникла проблема с одновременным обращением к сессии нескольких потоков. Что там с критическими секциями? Доступ к общему ресурсу (сессии) надо защищать. Нельзя давать одновременно работать с сессией двум потокам - эффект непредсказуем. Собственно работают общие правила многопоточности и шаренных ресурсов. Подскажите, как сделать, чтобы один поток ждал другого. Используй примитивы синхронизации - крит. секции, мьютексы, ивенты,... Если функции потоков одинаковы, то перед тем как обратиться к сессии - войди в крит секцию, закончил работать - выйди из нее. 4 функции InitializeCriticalSection Delete... Enter... - вход Leave...- выход и еще Try... варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2003, 14:27 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32137958&tid=1991037]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
8ms |
get forum data: |
4ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 390ms |

| 0 / 0 |
