LINUX.ORG.RU

Berkeley DB и многопоточность


0

0

Hi ppl. Подскажите плз, кто знает, при обращении (записи/чтении) к сабжевой базе из разных потоков, нужно ли в каждом потоке открывать базу, или можно в основном потоке открыть базу а уже в каждом дочернем потоке обращаться по одному дескриптору БД ? И можно ли одновременно из разных потоков делать запись в базу, или нужно самому разграничивать доступ потоков с помощью семафоров?

anonymous

Насколько я знаю, лучше так вообще не делать :) Лучше всего обращаться к базе по одному дескриптору, предварительно залочив какой-либо объект синхронизации(mutex например). А еще лучше открыть базу данных в отдельном процессе и организовать мини сервер по обработке запросов. Связано это с тем что базы данных обычно делают memory mapping на файлы данных, и если во время работы у тебя случится сегфолт, то в этом файле вообще может оказаться что угодно. От таких вещей лучше изолироваться(по собственному опыту :) )

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.