Re: Многопоточность и доступ к MS ACCESS
От: molostov  
Дата: 18.12.06 07:37
Оценка: 4 (1)
Здравствуйте, metod, Вы писали:

M>У меня проблема состоит в том, что при попытке подключиться к БД Access при создании нескольких потоков, программа вылетает.


Dao не поддерживает многопоточность.
Многопоточность и доступ к MS ACCESS
От: metod Россия  
Дата: 15.12.06 19:43
Оценка:
У меня проблема состоит в том, что при попытке подключиться к БД Access при создании нескольких потоков, программа вылетает.

void InitDB()
{

    CDaoDatabase db;
    CDaoRecordset recset(&db);
        db.Open("c:\\db1.mdb");
        recset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM Table",NULL);
    recset.Close();
    db.Close();
}

Если запускать эту ф-ю без создания потоков, то все нормально работает.
Как только создаю потоки вида:
....
for(int i=0,i<10,i++)
_beginthreadex(NULL, 0, FuncThread,0, 0, NULL);
....
....
....
unsigned int __stdcall FuncThread(LPVOID tParam)
{
   InitDB();
}

программа вылетает, в чем беда не понимаю
может кто уже с этим сталкивался...
Re: Многопоточность и доступ к MS ACCESS
От: shelkovnikov Россия  
Дата: 18.12.06 03:35
Оценка:
Здравствуйте, metod, Вы писали:

M>У меня проблема состоит в том, что при попытке подключиться к БД Access при создании нескольких потоков, программа вылетает.


M>
M>void InitDB()
M>{

M>    CDaoDatabase db;
M>    CDaoRecordset recset(&db);
M>        db.Open("c:\\db1.mdb");
M>        recset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM Table",NULL);
M>    recset.Close();
M>    db.Close();
M>}
M>

M>Если запускать эту ф-ю без создания потоков, то все нормально работает.
M>Как только создаю потоки вида:
M>
M>....
M>for(int i=0,i<10,i++)
M>_beginthreadex(NULL, 0, FuncThread,0, 0, NULL);
M>....
M>....
M>....
M>unsigned int __stdcall FuncThread(LPVOID tParam)
M>{
M>   InitDB();
M>}
M>

M>программа вылетает, в чем беда не понимаю
M>может кто уже с этим сталкивался...

знать бы текст (номер) ошибки
может не инициализирован COM в этоих потоках,
может совместный доступ к одному файлу MDB не правильно задан,
может потоковая модель не совместима с драйверами Jet
Re: Многопоточность и доступ к MS ACCESS
От: Бенедикт  
Дата: 18.12.06 11:00
Оценка:
metod,

как уже сказали, DAO не поддерживает многопоточность (not thread safe). Используйте ADO.
Re[2]: Многопоточность и доступ к MS ACCESS
От: metod Россия  
Дата: 18.12.06 18:00
Оценка:
Здравствуйте, Бенедикт, Вы писали:

Б>metod,


Б>как уже сказали, DAO не поддерживает многопоточность (not thread safe). Используйте ADO.

спасибо, буду пытаться!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.