crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> boost::interprocess, Я мало травы выкурил чтобы это понять?
alexy
  опции профиля:
сообщение 23.2.2013, 0:23
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 4.8.2010
Пользователь №: 1931

Спасибо сказали: 0 раз(а)




Репутация:   0  


Создаю я значит класс, который можно вызывать из разных процессов, типа

using namespace boost::interprocess;

class foo {
public:
  std::string bar()const{
     shared_lock<interprocess_upgradable_mutex> lock(mutex);
     // get the data;
     return data;
   }
  void bar(const std::string& nb){
     scoped_lock<interprocess_upgradable_mutex> lock(mutex);
     //write the data
  }

private:
  static interprocess_upgradable_mutex mutex;
};
// определяю mutex в cpp файле


У меня вываливается (еще до вызова конструктра, даже заблокировать-то еще не успел ничего)
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >'
  what():  boost::lock_error


Может я не правильно библиотеку использую?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 23.2.2013, 12:18
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


честно говоря, не очень понятно, зачем в вебе такая самодельная синхронизация, если там обычно стоит база данных и она сама по себе поддерживает сессии и уровни доступа. обычно такие задачи (когда есть юзеры и админы) делаются тупо через запросы к базе и там всё естественным путём решается, потому что базы именно под это и заточены. они разрешают сессии и откаты сессий, одновременный доступ кучи клиентов и многое другое. делать свой велосипед, копирующий поведение базы данных, можно, но сложно и муторно. разве что в качестве упражнения для прокачки программистских навыков, а так, на практике - вряд ли.
ещё очень давно, на заре моей работы программистом, мы делали одну софтину (не форум, но это без разницы), которая хранила весь свой код в базе. в базе были и данные, и формы, и методы загрузки данных. админ мог менять это всё и настраивать, а у юзера была простая программка, которая цеплялась к базе, подгружала оттуда всё, и получалось полноценное приложение, с множеством разных форм, для работы с данными в базе. его можно было менять как угодно, ничего не меняя на стороне юзера. это один из подходов к таким задачам, если нужен самодельный клиент.

что касается странных ошибок, они не возникают ниоткуда: чудес-то не бывает. либо компилишь что-то не то, либо что-то закэшировалось где-то. почисти проект, пересобери с самого начала. само по себе ничего никогда не падает.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.2.2025, 0:07