Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки WinApi и GCC, Обуздание потоков 
:(
    Опции темы
bsa
Дата 29.7.2012, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(NYX @  29.7.2012,  23:46 Найти цитируемый пост)
Про RAII - я мальца сократил код.
причем тут RAII?
Цитата(NYX @  29.7.2012,  23:46 Найти цитируемый пост)
 Ваще где то подглядел обертку для критсекций, там в конструкторе делается инициализация, в дуструкторе соответственно...

Молодец. Теперь подсмотри где-нибудь обертку, которая производит таким же образом еще и захват с освобождением мьютекса. Например, в бусте.
PM   Вверх
NYX
Дата 29.7.2012, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

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



Если так, стиснув зубы... VPS и размножение на многих провах оно как бы, ну платное что ли. И допустим изначально гонять несколько отдельных серверов накладно, при том что кол-во пользователей может снижаться и варьироваться. А если бы например сделать на трех потоках для групп, то тогда можно было бы ОДНО И ТО ЖЕ ПО запускать уже в трех режимах.
1) как у же помоему писал - полноценный сервер
2) сервер в режиме прием-отдача
3) сервер калькуляций (операция с БД, проверка на содержание мата и прочее прочее)
В этом случае, получается цепь

TI - thread in
TC - thread calc
TO - thread out
QI - queue in
QO - queue out

1) TI -> QI -> TC -> OQ -> TO
2) TI -> QI ... ... ... OQ -> TO
3) ... ... QI -> TC -> OQ ... ...
тогда скорость калькуляции была бы быстрее. Для пунктов 2 и 3 очереди были бы шаровыми, может и по экземпляру очереди на сервак, а может располагались бы например QI на 2, а OQ на 3. Но это единственное до чего я смог догадаться smile

Добавлено @ 23:12
bsa
Цитата

Молодец. Теперь подсмотри где-нибудь обертку, которая производит таким же образом еще и захват с освобождением мьютекса. Например, в бусте.

Брр. В смысле? не, ну мьютек принципиально... ща-ща. Неявным образом захват мьютекса это будет создание объекта и деструктор уже будет выполняться по итогу выполнения функции. Окей... моя обертка работает так же smile но только это работабельно в случае мьютекса уже имеющегося глобально. В случае критсекции это уже внутри объекта использующего объект обертки. Про RAII читал тут http://www.gamedev.ru/code/terms/RAII
Я понял в чем смысил. Если честно это очень здоровски использовать такие пряники. Так как можно создать весьма не сложные потокобезопасные объекты. А может даже и вообще сделать так, что бы все разделяемости делались закулисами.

Это сообщение отредактировал(а) NYX - 29.7.2012, 23:23
--------------------
'long long long' is too long for GC
PM   Вверх
NYX
Дата 29.7.2012, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

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



А в бусте в каком направлении смотреть? 
Код

    template<typename SharedMutex>
    class shared_lock_guard
    {
    private:
        SharedMutex& m;

    public:
        typedef SharedMutex mutex_type;
        BOOST_THREAD_NO_COPYABLE(shared_lock_guard)
        explicit shared_lock_guard(SharedMutex& m_):
            m(m_)
        {
            m.lock_shared();
        }
        shared_lock_guard(SharedMutex& m_,adopt_lock_t):
            m(m_)
        {}
        ~shared_lock_guard()
        {
            m.unlock_shared();
        }
    };


Это сообщение отредактировал(а) NYX - 29.7.2012, 23:38
--------------------
'long long long' is too long for GC
PM   Вверх
bsa
Дата 30.7.2012, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(NYX @  30.7.2012,  00:35 Найти цитируемый пост)
А в бусте в каком направлении смотреть? 

boost::thread. Там есть класс mutex (ты его называешь критической секцией, - очень жаль, что ты меня так и не понял и пытаешься использовать везде термины windows).
PM   Вверх
NYX
Дата 30.7.2012, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

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



да я уже глянул исходники, я понял смысл. передается объект в конструктор и по завершению работы функции срабатывает деструктор который этот самый мутекс и освобождает smile
В плане не понял? Про критсекции? Я знаю что это не мутексы и ваще это некий гибрид. У критсекций минус есть, они не могут быть доступны из других процессов. Поэтому критсекции удобно использовать для каких то внутренних атомарностей объектов. Если речь идет о шаровых данных, то мутексы \ семафоры удобнее, так как с их помощью можно добиться немного более лучшего эффекта, нежели выстраивание потоков в ряд.

Это сообщение отредактировал(а) NYX - 30.7.2012, 17:49
--------------------
'long long long' is too long for GC
PM   Вверх
NYX
Дата 30.7.2012, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

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



концептуально читатели-писатели на мьютексахЪ

Это сообщение отредактировал(а) NYX - 30.7.2012, 19:01

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  MultiCore_OS_Lab2_ReadersWriters.pdf 423,53 Kb
--------------------
'long long long' is too long for GC
PM   Вверх
NYX
Дата 30.7.2012, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

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



Семафоры, мониторы и синхронные сообщения

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  MultiCore_OS_Lec4_Concurrency2.pdf 423,56 Kb
--------------------
'long long long' is too long for GC
PM   Вверх
bsa
Дата 30.7.2012, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(NYX @  30.7.2012,  18:44 Найти цитируемый пост)
В плане не понял? Про критсекции? Я знаю что это не мутексы и ваще это некий гибрид. У критсекций минус есть, они не могут быть доступны из других процессов. Поэтому критсекции удобно использовать для каких то внутренних атомарностей объектов. Если речь идет о шаровых данных, то мутексы \ семафоры удобнее, так как с их помощью можно добиться немного более лучшего эффекта, нежели выстраивание потоков в ряд.

Ты опять меня не понимаешь. Такое ощущение, что ты не читаешь что я тебе пишу. А видишь только ряд ключевых слов, но смысл предложений до тебя не доходит.
Читай внимательно: В WINDOWS КРИТИЧЕСКОЙ СЕКЦИЕЙ НАЗЫВАЕТСЯ ТО, ЧТО ВЕЗДЕ НАЗЫВАЕТСЯ МЬЮТЕКСОМ. Именно поэтому, термин "критическая секция" лучше вообще не употреблять, кроме как в контексте WinAPI (именно на уровне реализации, а на уровне обсуждения стратегий и алгоритмов следует использовать mutex).

Это сообщение отредактировал(а) bsa - 30.7.2012, 22:06
PM   Вверх
NYX
Дата 31.7.2012, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

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



bsa,  вот всегда так. Я тебя прекрасно понял и написал аж несколько раз что критсекция в моем понимании это гибрид и что изначально есть мьютексы, семафоры дейкстры и многое другое smile Критические секции удобно использовать в определенных ситуациях... само собой для нативного windows-ПО. В кроссплатформенном ПО не целесообразно smile Я рассуждаю с акцентом на Windows потому что под Linux или какую либо другую ОС я пишу.  smile Я безусловно благодарен за такое разъяснение! Если бы не ваши усилия, я бы мало чего смог понять! Поэтому всем кто отвечал в теме, каждомму по плюсу, а то и несколько! smile

Это сообщение отредактировал(а) NYX - 31.7.2012, 10:54
--------------------
'long long long' is too long for GC
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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