Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пул потоков с одним одновременно выполняемым поток, Очередь потоков 
:(
    Опции темы
Karrde
Дата 24.10.2011, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Есть такая задача. По ивентам с разных библиотек надо писать в базу данных. База на sqlite(т.е. не поддерживает одновременное подключение нескольких потоков). Как сделать пул, чтобы одновременно выполнялся только один из потоков(чтобы случайно к базе одновременно не обратилось несколько потоков)...
Пытался сделать через ThreadPool - но там нельзя ставить одновременно выполняющееся кол-во потоков меньше, чем ядер в процессоре.
Или просто сделать через Mutex, поставленном на выполнении самого запроса к базе?
Заранее благодарю
PM MAIL   Вверх
jonie
Дата 24.10.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(Karrde @  24.10.2011,  16:13 Найти цитируемый пост)
 База на sqlite(т.е. не поддерживает одновременное подключение нескольких потоков).

да ладно? и давно это с ней ?


Цитата(Karrde @  24.10.2011,  16:13 Найти цитируемый пост)
Как сделать пул, чтобы одновременно выполнялся только один из потоков(чтобы случайно к базе одновременно не обратилось несколько потоков)...


вообще Barrier использовать можно в .net4 или WaitHandle в .net3 и ранее


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Fitc
Дата 25.10.2011, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: 3
Всего: 4



а как насчет firebird, ее вроде можно таскать с приложением и многопоточность она поддерживает насколько я знаю

Добавлено через 5 минут и 40 секунд
хотя пишут, что мультипоочный режим поддерживается на sqllite
http://www.sqlite.org/threadsafe.html
PM MAIL   Вверх
Karrde
Дата 25.10.2011, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Насколько я знаю, firebird, которую можно таскать с собой - это firebird embedded. А у неё такое же ограничение на одновременное количество записей в базу(кстати, читать из базы могут несколько потоков. но это и в sqlite)

Цитата

Недостатки Firebird Embedded
Самый главный недостаток firebird embedded – невозможность одновременных подключений.Один процесс Embedded Firebird блокирует файл БД для монопольного доступа.



Цитата(jonie @  24.10.2011,  17:52 Найти цитируемый пост)
Цитата(Karrde @  24.10.2011,  16:13 ) База на sqlite(т.е. не поддерживает одновременное подключение нескольких потоков).да ладно? и давно это с ней ?

Цитата

Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется


Это сообщение отредактировал(а) Karrde - 25.10.2011, 14:13
PM MAIL   Вверх
Fitc
Дата 25.10.2011, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: 3
Всего: 4



Да я имел ввиду именно firebird embedded и подозревал, что она в имеет некоторые ограничения  smile  А вам надо базу с собой именно таскать?
PM MAIL   Вверх
jonie
Дата 25.10.2011, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(Karrde @  25.10.2011,  15:05 Найти цитируемый пост)

Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется

http://www.sqlite.org/cvstrac/wiki?p=MultiThreading
почитайте.

Вообще (если уж вам так хочется) вам гуглить про паттерн поставщик-потребитель. Например тут http://www.rsdn.ru/article/mag/200804/AsyncDotNet.xml
....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.