|
|
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
Дано: несколько процессов(штук 20), генерирующих информацию (строка 300 байт раз в 10 сек). Надо: писать её в единое хранилище(любое) Желательно: занимать минимум память при выполнении Пытался: TADOConnection+TADOCommand , жрёт 6 мег памяти и при 3х процессах вылетает из-за блокировки. (может конечно руки кривые?) Что посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 18:24 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
если хранилище любое, то можно в файл писать используя critical section для блокировки. если нужна БД, то можно посмотреть sqlite для нее есть легкие обертки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 18:30 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
в файл можно. а как применить critical section, если это разные екзешники? IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 18:32 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
4d_monsterв файл можно. а как применить critical section, если это разные екзешники? .. первое что пришло на ум... нужен кернел. мона выполнить через дэлеле. синхронизироваться мона через объекты ядра и шаред секции. задачи которые будет решать сия дэлеле - выделение конкурирующим процессам пула для сваливания инфы... ну и запись самой инфы...если грамотно пользоваться API для доступа в обычный файл - думаю проблем не составит... думаю рулит Рихтер "Windows для профессионалов" с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 19:01 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
да миллион способов, 300 байт в десять секунд это не что. можно и обойтись без всяких мьютексов и прочего, в файл писать и деражать переменную типа занято незанято. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 23:24 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
4d_monsterПытался: TADOConnection+TADOCommand , жрёт 6 мег памяти и при 3х процессах вылетает из-за блокировки. (может конечно руки кривые?) Да, кривые. Ну что уж тут посоветовать.... Не строгать же их ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 00:16 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
4d_monsterв файл можно. а как применить critical section, если это разные екзешники? Если разные, то наверное LockFileEx/UnlockFileEx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 06:58 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
4d_monsterДано: несколько процессов(штук 20), генерирующих информацию (строка 300 байт раз в 10 сек). Надо: писать её в единое хранилище(любое) Желательно: занимать минимум память при выполнении Пытался: TADOConnection+TADOCommand , жрёт 6 мег памяти и при 3х процессах вылетает из-за блокировки. (может конечно руки кривые?) Что посоветуете? Если устроит обычный файл, то перед записью открывай Код: plaintext 1. Если не открылся, то значит кто-то в него пишет, пытайся открыть повторно, и так в течении 5-10 сек. (чтобы твоя прога совсем не повисла, если кто-то надолго файл заблокирует), только паузу перед повторной попыткой сделай обязательно хотя бы 0.1 сек, а то получится суперзагружалка процессора, как в 1С 7.7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 07:46 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
Еще вариант - через единый логгер. Все процессы ищут его окно и кидают ему сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 10:10 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
про единый логгер (по tcp или shared memory) мысль правильная. если проще, то открывать файл с флагом FILE_SHARE_READ+FILE_SHARE_WRITE блокировки можно через mutex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 12:10 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
Multithreaded Pipe Server . Там же рядом клиент к нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 13:37 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
А с данными в плоском файле потом что делать ? ИМХО - для таких скоростей любая СУБД подойдет (при условии прмых рук) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 13:45 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
MasterZiv - что прочитать, чтобы руки от ужаса сами выпрямились? Barlone - Спасибо, буду читать. Dima T - ну это слишком вульгарно Akh - окон нет Maksim UM - по TCP было бы не плохо, но наверно долго разбираться (по сравнению с LockFile) maXmo - Огромное спасиббо Карабас Барабас - например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 14:29 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
4d_monsterнапример? Что "например" ? Пример СУБД, которая в состоянии обслуживать 20 клиентов по 300 байт/10сек ? Я лично достаточно плотно работаю в FireBird - потянет точно. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 14:43 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
И сколько места и памяти это займёт? IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 14:45 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
думаю бд тут оверкилл (зато логгер писать не придётся и масштабируемость будет хорошая). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 14:47 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
Тогда может так: через pipe процессы шлют логеру инфу, тот её пишет в TADO. тогда 6 мег только на 1 процесс, а остальные по чуть-чуть будут. IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 14:53 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
4d_monsterИ сколько места и памяти это займёт? что "это" ??? Я бы сделал так: ставишь FireBird, можно даже на другом компе. Пишешь клиента, который получает данные, сбрасывает их во временный файл (у каждого клиента свой !), а уже из файла (в другом потоке клиента) пишешь данные в базу. Временный файл нужен для ситуаций, когда сервер по каким-либо причинам недоступен, или когда поток данных превысит скорость заливки в базу, чтобы информация не терялась. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 14:55 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
TADO - это что? Если ты уже работаешь с сервером баз данных, то ничего падать не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 15:01 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
4d_monster - окон нет У логера сделать фиктивное окно и кидать на него сообщения. Но лучше, наверное, Максим с сокетами подсказал. На счет пипе - не знаю. В линуксе реализованы в рамках одного процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 15:05 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
TADO* TADOConnection TADOCommand прога то генерирующая инфу мизерная - 30 строчек API вызовов в бесконечном цикле по сообщению WM_TIMER. Билдер компиит в ~70КБ, правда при запуске сразу в ~700КБ превращается. (DevCpp - прога ~700КБ, при запуске ~700КБ) А если TADOCommand использовать - жрёт ~6 мег. Жуть. IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 15:11 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
Akh - про pipe читаю, пишут, что и трубу и на другой комп можно открыть, а не только между процессами. IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 15:14 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
истинно так. Только там тоже вынь должна быть. На локальном компе пипе так же удобен, как тцп, только шустрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 16:00 |
|
||
|
Параллельная запись данных
|
|||
|---|---|---|---|
|
#18+
Пробую рабоать с пипе, обратил внимание сервер отсюда (ничего не менял, мне для проверки просто) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/multithreaded_pipe_server.asp при работе жрёт 1.7МБ памяти (екзешник 8кил). Как с этим бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 16:38 |
|
||
|
|

start [/forum/topic.php?fid=57&startmsg=33868157&tid=2030802]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 555ms |

| 0 / 0 |
