Форум программистов, компьютерный форум, киберфорум
Наши страницы

Выборочная синхронизация потоков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как решается это уравнение? http://www.cyberforum.ru/cpp-beginners/thread510338.html
Как решается это уравнение?
C++ C++ объясните пжлста как работает программа? объясните пжлста как работает, и что для чего используется вот задание: имеется поток для 3 очередей. Заявки отсортированы по времени поступления в каждую очередь. НАписать прогу печатающую порядокв... http://www.cyberforum.ru/cpp-beginners/thread510321.html
Помогите написать программу с действительными числами. C++
Всем привет.Мне нужно помочь с прогой.Вот задания:даны действительные числа - количество осадков (в миллиметрах), выпавших в Москве в течение первых 50 лет нашего столетия. Надо вычислить среднее...
C++ Задачи для решения на алгоритмическом языке ANSI C к государственным экзаменам
21го госы помогите что нить решить (((
C++ Найти сколько раз содержимое файла 1 встречается в файле 2 http://www.cyberforum.ru/cpp-beginners/thread510290.html
Дано два файла(путь к файлам ввести с консоли).Найти сколько раз содержимое файла 1 встречается в файле 2.
C++ Проблема с запуском одной программы из другой Здравствуйте для начала Задача казалась весьма простой, мне нужно запустить одну программу используя программку которую сам написал. Для это я провол 2 функции WinExec и system. И всё было хорошо,... подробнее

Показать сообщение отдельно
sercher

Выборочная синхронизация потоков - C++

27.06.2011, 06:04. Просмотров 594. Ответов 0
Метки (Все метки)

Здравствуйте, есть потоки работающие с общим двунаправленным связанным списком, все потоки кроме одно только читают информацию из списка , один поток "основной" добавляет и удаляет записи из списка, сейчас я синхронизирую чтение/запись через мутекс который захватывается всеми читающими потоками и также основным потоком при необходимости удаления удалении записи. По идеи все читающие потоки должны синхронизироваться только с "основным" потоком но не между собой, так как ошибка доступа возможна лишь при удалении записи и одновременном чтении из нее. Вот и возник вопрос как синхронизировать доступ к области памяти только между "Основным" потоком и всеми читающими, т.е. производить блокировку читающих потоков только при необходимости удаления.

Сейчас делаю так:

Все читающие потоки:
В начале чтения ждем захвата общего мутекса
читаем
освобождаем мутекс

"Основной поток"
чтение и добавление производим без захват мутекса
при удалении захватываем мутекс.
удаляем
освобождаем мутеск.

Как видно при работе по такой схеме все потоки чтения синхронизируются не только с основным потоком но и между собой, из-за чего тратиться много времени на ожидание перед чтением.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.