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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
vdvoid
3 / 3 / 0
Регистрация: 26.02.2011
Сообщений: 99
#1

потокобезопасность - C++

09.04.2013, 20:07. Просмотров 1179. Ответов 8
Метки нет (Все метки)

Интересно узнать что нужно и не нужно синхронизировать при доступе из разных потоков, например понятно что доступ к глобальным переменным нужно синхронизированть, а вот функции например, которые не используют глобальных переменных можно ли вызывать без блокировок в разных потоках?, использовать глобальные дескрипторы в разных потоках или создавать свои и тд. Понимаю что вопрос зависит от того с чем работешь, но хотелось бы узнать хотябы на уровне языка, без всяких библиотек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 20:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос потокобезопасность (C++):

Потокобезопасность std::map::end, std::list::end - C++
Собсна сабж, могу ли я без синхронизаций выполнять подобного рода код if (myIter != map.end()) // != list.end() {...} myIter =...

Потокобезопасность в C# - C#
в общем вот есть такая структура данных, не будем вникать зачем мне она и что она делает, думаю тут и так понятно public class...

Потокобезопасность - C# WCF
Имеем простейший SubPub сервис public class MPublisher:IOperations,IPutLog { public static event...

.NET 4.x Потокобезопасность, FileStream - C#
пускаю потоки на выполнение этого метода: ... for (int b = 0; b < fs.Length/10; b += 4) { fs.Seek(Convert.ToInt32(part) +...

Потокобезопасность uint - C#
Всем привет. К примеру есть некий статический объект класса Player и он содержит: public uint PlayerZone; и есть к примеру 2...

Потокобезопасность и многопоточность - Java SE
Разбираюсь с принципами работы кэширования. есть LRU and LFU алгоритмы. Сейчас хочу сделать потокобезопасность. подскжате с чего здесь...

8
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.04.2013, 14:59 #2
Если есть общие ресурсы любого вида, нужно так или иначе синхронизировать доступ к этим ресурсам.
0
vdvoid
3 / 3 / 0
Регистрация: 26.02.2011
Сообщений: 99
11.04.2013, 15:10  [ТС] #3
а вот например разные системные вызовы?
std::cout << "чтото"; выводить на дисплей без синхронизации ,не важно в какой последовательности строки запишуться, не перемешаються ли атомарные данные (в данном случае содержимое строк)?, или в системных вызовах както по очереди все делается?
в разных потоках открывать сокет на один порт?
0
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
11.04.2013, 15:21 #4
или в системных вызовах както по очереди все делается?
если я верно понял вопрос, то для целей синхронизации общих данных между потоками - используется механизм семафоров и мьютексов (они разные бывают)
очень хорошо это описано у Тененбаума в книнге "Современные операционные системы"
0
stima
487 / 339 / 39
Регистрация: 22.03.2011
Сообщений: 1,082
Завершенные тесты: 2
11.04.2013, 15:24 #5
Насчет потока ввода вывода:
Concurrent access to a synchronized (§27.5.3.4) standard iostream object’s formatted and unformatted input (§27.7.2.1) and output (§27.7.3.1) functions or a standard C stream by multiple threads shall not result in a data race (§1.10). [ Note: Users must still synchronize concurrent use of these objects and streams by multiple threads if they wish to avoid interleaved characters. — end note ]
В сокетах зависит от реализации.
0
consthab2
Сообщений: n/a
11.04.2013, 16:13 #6
Самый простой ответ - все данные передавайте через аргументы. Глобальные переменные позволяют быстро дополнить функциональность программы, но закладывают мощную мину: Если программа сложна, то рано или поздно вы захотите создавать вторичные потоки. Вот тогда встанет важный вопрос готовы ли вы потратить время на исправление функций (дополнение их недостающими аргументами) либо согласны терять в производительности, ограничивая каждое обращение к глобальной переменной парой EnterCriticalSection/LeaveCriticalSection Подробнее о синхронизации потоков здесь: http://strongcpp.blogspot.ru/2013/04/blog-post.html
stima
487 / 339 / 39
Регистрация: 22.03.2011
Сообщений: 1,082
Завершенные тесты: 2
11.04.2013, 16:23 #7
Не совсем так. Вернее в корне не так, видимость переменной это ее видимость. Вы слышали о таких вещах как атомарность и неблокирующая синхронизация. Нужно понимать, что лочить, как лочить и когда лочить иначе ваша потокобезобасноть обойдется Вам дороже чем работа в одном потоке.
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,948
Записей в блоге: 17
11.04.2013, 16:37 #8
Цитата Сообщение от stima Посмотреть сообщение
Не совсем так. Вернее в корне не так, видимость переменной это ее видимость. Вы слышали о таких вещах как атомарность и неблокирующая синхронизация. Нужно понимать, что лочить, как лочить и когда лочить иначе ваша потокобезобасноть обойдется Вам дороже чем работа в одном потоке.
От ситуации зависит, ибо атомарность может вылиться тоже грамостким и запутанным кодом.
0
stima
487 / 339 / 39
Регистрация: 22.03.2011
Сообщений: 1,082
Завершенные тесты: 2
11.04.2013, 16:39 #9
Я же написал: "как лочить"^_^
0
11.04.2013, 16:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 16:39
Привет! Вот еще темы с ответами:

Потокобезопасность ConcurrentDictionary vs Dictionary - C#
Добрый день. Довольно наивный вопрос, но ответа я на него не нашел. Я знаю что ConcurrentDictionary это потокобезопасный Dictionary. ...

Потокобезопасность ADO.net - C#
Здравствуйте! Пишу приложение-сервер, на котором клиенты будут вызывать методы через WCF. Эти методы будут выполнять команды SQL для базы...

Методы расширения. Потокобезопасность - C#
Добрый день. Являются ли методы расширений потокобезопасными или необходимо вручную создавать блокировки при реализации расширений. Смущает...

Потокобезопасность статических элементов - C#
Подскажите, есть ли приемлемое решение следующей проблемы: имеется некий статический класс со статическими полями и методами, к которому...


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

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

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