0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 3
|
|
1 | |
Параллельное программирование в С++03.07.2013, 11:01. Показов 4750. Ответов 10
Метки нет (Все метки)
Здравствуйте! я новичок в параллельном программировании. Помогите пожалуйста с задачкой!! Есть одна глобальная переменная, которая должна модифицироваться двумя потоками. Синхронизировать эти потоки по средствам критической секции. Заранее спасибо)
0
|
03.07.2013, 11:01 | |
Ответы с готовыми решениями:
10
Параллельное программирование Параллельное программирование Параллельное программирование на C++ Параллельное программирование |
|
||||||
03.07.2013, 11:24 | 2 | |||||
Может, std::lock_guard подойдет:
0
|
73 / 69 / 1
Регистрация: 19.05.2010
Сообщений: 167
|
|
03.07.2013, 12:59 | 3 |
std::lock_guard вроде как в С++11 появился, не все компилляторы это могут поддерживать
Если речь идет об одной переменной типа int, то можно дописать модификатор volatile при ее объявлении, тогда можно обойтись без мьютексов Если нужно именно через критическую секцию синхронизировать потоки, то довольно подробно об этом написано тут для POISX или тут для windows
1
|
Ушел с форума
|
|
03.07.2013, 13:51 | 4 |
А чуть подробнее о задаче ? Что именно делают потоки ?
Добавлено через 55 секунд Это если только чтение-запись. А, например, инкремент переменной уже не будет атомарен, независимо от volatile, и в этом случае нужна синхронизация.
1
|
Заблокирован
|
|
03.07.2013, 14:05 | 5 |
beginner_29, доработай по аналогии Как после обработки потока запустить его с новым методом? - яркая модель двух потоков по схеме Производитель-Потребитель
1
|
beginner29
|
|
03.07.2013, 14:16 | 6 |
Все равно. Пусть первый поток умножает переменную на 2, а второй поток прибавляет к ней единицу.
|
Ушел с форума
|
|
03.07.2013, 14:58 | 7 |
Ну так и в чем проблема ? Объявите критическую секцию где-нибудь в глобальном пространстве имен,
проинициализируйте ее с помощью InitializeCriticalSectionAndSpinCount. Потом запустите два потока через _beginthreadex, первый пускай в цикле выполняет умножение переменной, второй инкремент. Оба перед обращением к переменной должны звать EnterCriticalSection, а после - LeaveCriticalSection. А вообще, критическая секция здесь - слишком большая роскошь, из-за высокой конкуренции за переменную это убъет всю производительность в ноль, потоки будут постоянно ждать друг друга.
2
|
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 3
|
||||||
03.07.2013, 21:50 [ТС] | 8 | |||||
Я попробовала, вот что у меня получилось. Я так понимаю она работает у меня неправильно(
0
|
Заблокирован
|
|
03.07.2013, 22:15 | 9 |
beginner_29, я же дал нормальный код с синхрой двух потоков
- получает текущее time_t и переводит его в стрингу - печатает эту строку Жаль когда люди не ценят помощи. Добавлено через 1 минуту ЗЫ: - хотябы в своём коде сделайте , потоки что додуматсья должны какая нач инициализация у а?
1
|
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 3
|
|
03.07.2013, 23:07 [ТС] | 10 |
спасибо большое)) я же сказал, что новичок=) и пока не до конца понимаю ваш код. Мне бы что по проще для начала)
0
|
Taatshi
|
||||||
04.07.2013, 23:22
Параллельное программирование в С++
#11
|
||||||
0
|
04.07.2013, 23:22 | |
04.07.2013, 23:22 | |
Помогаю со студенческими работами здесь
11
Параллельное программирование Параллельное программирование параллельное программирование Параллельное программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
|
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
|
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать.
/ / . . .
|
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
|
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
|
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
|
Как записать только часть изменений файла в Git
bytestream 28.01.2025
В процессе разработки программного обеспечения часто возникает необходимость сохранить только определенные изменения из множества внесенных правок в файлах. Система контроля версий Git предоставляет. . .
|
[golang] 80. Remove Duplicates from Sorted Array II
alhaos 28.01.2025
В предоставленном упорядоченном по возрастанию целочисленном слайсе, оставить уникальные элементы полюс один возможный дубликат. Вернуть количество таких элементов.
/ / . . .
|
Что такое внедрение зависимостей и для чего оно применяется
bytestream 27.01.2025
В современной разработке программного обеспечения одной из ключевых проблем является управление зависимостями между различными компонентами системы. Внедрение зависимостей (Dependency Injection, DI). . .
|
Как установить cellpadding и cellspacing в CSS
bytestream 27.01.2025
При создании веб-страниц с табличными данными разработчики часто сталкиваются с необходимостью правильного оформления внутренних и внешних отступов в таблицах. В традиционной разметке HTML для этих. . .
|
Чем отличаются public, protected, package-private и private в Java
bytestream 27.01.2025
В языке программирования Java механизм модификаторов доступа играет ключевую роль в реализации одного из фундаментальных принципов объектно-ориентированного программирования - инкапсуляции. . . .
|
Зачем нужно explicit в C++. Преобразование типов
bytestream 27.01.2025
В мире программирования на C++ управление преобразованием типов данных играет crucial роль в создании надежного и безопасного кода. Язык C++ предоставляет множество механизмов для контроля над. . .
|