Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
NellkaKaramelka
0 / 0 / 0
Регистрация: 03.12.2017
Сообщений: 114
#1

Подходит ли shared_mutex в данном случае для одновременного доступа нескольких потоков к одному ресурсу?

21.05.2018, 11:40. Просмотров 77. Ответов 1
Метки нет (Все метки)

три потока работают с одной очередью. поток READ считывает данные из файла и по одной строке и записывает в очередь. Поток WRITE записывает данные из очереди в отдельный файл. поток CHANGE тоже получает доступ к той же очереди, и когда видит что попалось в очереди нужное слово, то меняет его на другое слово и тогда поток WRITE записывает ни то что было, а то что задал поток CHANGE.

здесь часть кода.


подскажите пожалуйста, я уже несколько дней бьюсь с этой задачей

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
shared_mutex mut;
void read(){
std::shared_lock<std::mutex>lk(mut);
...
 
 
data_cond.notify_one();
 
}
 
void change(){
 
std::shared_lock<std::mutex>lk(mut);
lk.unlock();
}
 
 
void write(){
 
...
std::shared_lock<std::mutex>lk(mut);
 
...
lk.unlock();
...
data_cond.notify_one();
 
}
 
int main(){
 
thread f_read(read,fileopen);
thread f_write(write,fileclose);
thread f_change(change);
 
 
 f_read.join();
 f_write.join();
f_change.join();
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2018, 11:40
Ответы с готовыми решениями:

Для чего выполняется присваивание в данном случае?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int main() { ...

Возможен ли одновременный доступ к одному ресурсу из нескольких потоков?
Возможен ли одновременный доступ к одному ресурсу из нескольких потоков?...

Программа для одновременного доступа нескольких пользователей при использовании БД
Помогите пожалуйста! Хочу создать программу для одновременного доступа...

Доступ к одному ресурсу из других потоков
Здравствуйте! Пытаюсь сделать &quot;бегущую&quot; строчку... После кучи советов,...

Обращение нескольких потоков к одному участку кода
Здравствуйте, недавно написал программку, которая запускает несколько потоков,...

1
Ygg
748 / 221 / 94
Регистрация: 10.02.2018
Сообщений: 517
21.05.2018, 12:20 #2
Нет, не подходит.
Все потоки изменяют очередь, значит они должны иметь эксклюзивный доступ на время внесения изменений.

Потоки изменения и записи при вашей организации программы будут работать наперегонки, если поток записи получит доступ к очереди раньше потока изменения, то запись выполнится до внесения изменений.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2018, 12:20

Потокобезопасная организация доступа к одному XML файлу на харде из разных потоков через QXmlStreamReader
Hail to the King baby! :) Как лучше организовать безопасный доступ на чтение и...

Форма для одновременного добавления нескольких записей в таблицу
Здравствуйте! Есть таблица для учета ежедневной выручки по сотрудникам со...

Подскажите контрол для одновременного просмотра нескольких изображений
Делаю фотоальбом . Могу загружать только одно фото . подскажите как сделать...


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

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

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