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

Использование несколькими потоками одной функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Оптимизация кода игры в крестики нолики. http://www.cyberforum.ru/cpp-beginners/thread946452.html
Написал небольшой код буду благодарен если нормальные программисты порекомендуют как его нужно исправить. это игра в крестики нолики 10*10. ниже привожу файлы. Board.cpp #ifndef _Board_...
C++ Имя экземпляра объекта внутри класса на С++ Добрый день. Подскажите, пожалуйста, как узнать имя экземпляра объекта внутри класса на С++ ? В частности, мне надо имя экземпляра объекта печатать на экран. http://www.cyberforum.ru/cpp-beginners/thread946447.html
C++ Разница между С и С++
Если не брать во внимание объекты и классы, то разница состоит только лишь в cin, cout и директивах?
C++ Рекурсивные функции
1. Написать рекурсивную функцию, которая бы вычисляла n-тое число Фибоначчи. 2. Написать рекурсивную функцию которая печатает элементы массива в обратном порядке.
C++ Принципы отладки в MVS 2012 http://www.cyberforum.ru/cpp-beginners/thread946414.html
Привет киберфорумцы! Подскажите пожалуйста, как в режиме отладки путешествовать только по написанному мной коду не, заходя в файлы предоставляемые MVS? А то начинаешь искать ошибку, выставив...
C++ Присвоение значения указателю Как можно, вот так, присваивать указателю значение? Разве, указатель не должен всегда содержать адрес? const char* szString = "Randy"; подробнее

Показать сообщение отдельно
Убежденный
Ушел с форума
Эксперт С++
15708 / 7218 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
01.09.2013, 10:09
В Visual C++ стандартные функции уже много лет как thread-safe.
Library Support for Multithreading
The Multithread C Libraries: LIBCMT.LIB and MSVCRT.LIB

The support library LIBCMT.LIB is a reentrant library for creating multithread programs.
The MSVCRT.LIB library, which calls code in the shared MSVCRT70.DLL, is also reentrant.
Вот, к примеру, что написано про функцию strtok:
strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l
Each function uses a thread-local static variable for parsing the string into tokens.
Therefore, multiple threads can simultaneously call these functions without undesired effects.
However, within a single thread, interleaving calls to one of these functions is highly likely to
produce data corruption and inaccurate results. When parsing multiple strings, finish parsing one
string before parsing the next.
А это про srand:
srand
The srand function sets the starting point for generating a series of pseudorandom integers in the current thread.
У каждого потока своя копия "состояния" (через TLS), поэтому в Visual C++ такие
функции, как rand, можно без всяких опасений использовать в разных потоках.

Цитата Сообщение от Александр Макед Посмотреть сообщение
так будет медленнее работать, так как переходы в методы класса жрут ресурсы процессора.
Гадание на кофейной гуще.
Переход в метод класса - это, грубо говоря, один дополнительный call.
И код метода запросто может быть встроен по месту вызова. Так что каких-то
дополнительных накладных расходов там ноль без палочки. А вот ожидание на
объектах ядра (event) - вот это действительно дорогая операция, особенно для
сценария с 50 потоками.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.