![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
сам printf не смотрел, может он и потокобезопасен (можно разобрать исходники), но его основа - output, которой, например, я в основном и пользуюсь, точно не потокобезопасна и Microsoft в описании на это указывает:
перемешивание логов будет обязательно, иначе этот метод не потребовался бы, причем этим перемешиванием желательно управлять хотя бы построчно, а еще лучше цветом, иначе эта каша вывода будет бесполезна -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GremlinProg |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
и, кстати, да, printf потокобезопасен:
printf.c:
_file.c:
mlock.c:
так что feodorv скорее прав, можно и без оберток ) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||
|
|||||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
GremlinProg, спасибо
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
GremlinProg, это что и вообще откуда?
в любом случае это отдельно взятая реализация, которая в другой версии компилятора совершенно другая и ничем не обязана |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
это статическая реализация CRT из MSVS 2010
на счет "совершенно другая" я бы поспорил, но в общем-то, конечно, любая другая реализация может и не быть потокобезопасной, если в стандарте нет оговорок по поводу потоков у нас раздел такой, API от Microsoft превалирует -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
А разве С++ что-то знает про потоки? В любом случае, если компилятор поставляется с многопоточной CRT, то проблем быть не должно. Думаю именно на это и нужно ориентироваться. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Знаете, господа. Могу заявить по собственному опыту, что лог, порубленный в кашу посимвольво, конечно гораздо хуже читаем, чем порубленный в кашу построчно. Но извлечение полезной информации и из того и из другого, занятие достойное криптоаналитика
Так что не надо задаваться вопросом потокобезопасности printf'а, а надо разводить логи от разных потоков в разные файлы. |
|||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
У меня примерно так работает лог, правда не в консоль вывод, а в файл. Из разных потоков пишут логи в кеш, который по таймауту или по наполнению сливается в один файл. Просматривая лог можно уловить последовательность операций. Пишется построчно, строки разных потоков чередуются, правда при этом каждый такой лог имеет префикс источника. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
а я так отлаживаю гибридные MPI-OpenMP-задачи, только пишу не в консоль и не в файл, а в сокет, определенному лог-серверу, который все это дело показывает на своем десктопе в RTF-окнах RTF позволяет гибко работать с текстом в текстовом же виде, т.е. помимо различия в префиксной части от разных потоков, фильтрация идет еще и по цвету текста и фона, а префиксами выделяю лишь контекст задачи в пределах источника, консоль конечно тоже вариант, но скудноватый, особенно, если потоков больше 8 ( цветов маловато, это затрудняет анализ разбора логов ) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
ну виндузятники к слову могут пользоваться OutputDebugString
она и логов не перемешивает, и тайминг есть, и в WinDbg можно логи расскрашивать в сколь угодно цветов ну и по сети логи снимать может |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Ну так можно время писать в лог |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |