Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Builder БД Необходимо поменять одно значение на другое в поле в базе данных http://www.cyberforum.ru/cpp-beginners/thread510348.html
Необходимо поменять одно значение на другое в поле в базе данных Пишу этот код по нажатию кнопки void __fastcall TForm1::N1Click(TObject *Sender) { if (ADOQuery1->RecordCount==0){ ShowMessage("Нет записей"); return;} ADOQuery2->SQL->Text="update Таблица1 set = В парке where код="+ADOQuery1->FieldByName("код")->AsString; ADOQuery2->ExecSQL();
C++ Как решается это уравнение? Как решается это уравнение? http://www.cyberforum.ru/cpp-beginners/thread510338.html
C++ объясните пжлста как работает программа? C++
объясните пжлста как работает, и что для чего используется вот задание: имеется поток для 3 очередей. Заявки отсортированы по времени поступления в каждую очередь. НАписать прогу печатающую порядокв котором эти заявки будут обслуженны. Время обслуживания заявок одинаковое. формат вых файла: кол-во заявок в первой очереди, список моментов времени в которые они возникают, анологично для 2й и 3й. В...
Помогите написать программу с действительными числами. C++
Всем привет.Мне нужно помочь с прогой.Вот задания:даны действительные числа - количество осадков (в миллиметрах), выпавших в Москве в течение первых 50 лет нашего столетия. Надо вычислить среднее количество осадков и отклонение от среднего для каждого года.Заранее спасибо.
C++ Задачи для решения на алгоритмическом языке ANSI C к государственным экзаменам http://www.cyberforum.ru/cpp-beginners/thread510312.html
21го госы помогите что нить решить (((
C++ Найти сколько раз содержимое файла 1 встречается в файле 2 Дано два файла(путь к файлам ввести с консоли).Найти сколько раз содержимое файла 1 встречается в файле 2. подробнее

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

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

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

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

Как видно при работе по такой схеме все потоки чтения синхронизируются не только с основным потоком но и между собой, из-за чего тратиться много времени на ожидание перед чтением.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru