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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sercher
#1

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

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

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

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

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

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

Как видно при работе по такой схеме все потоки чтения синхронизируются не только с основным потоком но и между собой, из-за чего тратиться много времени на ожидание перед чтением.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2011, 06:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выборочная синхронизация потоков (C++):

Синхронизация потоков в c++ - C++
Совершенно не понятно что не так и как правильно. Задача: Отсортировать массив целых чисел. Программу разбить на два синхронизированных...

Синхронизация потоков - C++
Есть статический класс к которому я хочу обращаться из разных потоков static class MyLog { public: static int log(std::string,...

синхронизация потоков - C++
проблема в следующем: есть 2 потока один считает некоторую сумму в цикле по столбцам матрицы второй должен выводить промежуточную...

Синхронизация потоков на семафорах - C++
почему не работает синхронизация потоков на семафорах? при компиляции ошибка сегментирования. На мютексах работает корректно. Потоки...

Буферы и синхронизация потоков - C++
Всем привет. Суть такова: есть(будет) некая софтина которая подгружает плагины(дмнамические библиотеки) создает поток с функцией из этого...

Синхронизация потоков Event c++ - C++
Необходимо, чтобы нить t4 ждала события просчета времени "time = 1000 * (getTime() - time);" и после этого запускалась. Как реализовать?...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2011, 06:04
Привет! Вот еще темы с ответами:

Синхронизация потоков - уведомление о событии - C++
Здравствуйте. Я хочу реализовать параллельную одновременную работу двух потоков, один из которых получает сообщения о событиях в...

Синхронизация потоков, события, WinAPI - C++
Уважаемые программисты! Решается такая задача: 5 потоков генерируют псевдослучайные числа, главный поток выводит их, при нажатии "enter"...

Синхронизация потоков при работе с файлом - C++
Доброго времени суток! У меня такая проблема: многопоточные приложения я не писал ни разу, но, в целом, имею представление о них....

Синхронизация потоков ввода и вывода в Eclipce CDT - C++
Недавно перешел на программирование на Eclipse, но загвоздка в том, что если нужно ввести какое-то значение, то его ввод вызывается до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru