![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: 1 Всего: 2 |
Cуществует ли "потокобезопасный" printf?
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
||||
|
||||
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: 1 Всего: 2 |
Может какая-нибудь winapi оббёртка?
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
||||
|
||||
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: 1 Всего: 2 |
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
конечно существует:
только он совершенно бесполезен, т.к. пытаться понять логику такого вывода в консоль бессмысленно само по себе, особенно, если этот вывод непострочный если такой метод понадобился, значит в логику проекта откуда-то заполз нехороший таракан -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: 1 Всего: 2 |
OK.
|
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
За что ж Вы так((( Microsoft так старалась, чтобы всё было потокобезапасно Насколько я знаю, можно спокойно пользоваться printf из стандартной библиотеки безо всяких обёрток... Безопасно будет -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
А причем тут microsoft? printf - сишная функция.
"Насколько я знаю" - это не аргумент, где это написано? http://msdn.microsoft.com/en-us/library/wc...z(v=vs.71).aspx |
||||
|
|||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
основная проблема - перемешивание логов
эту проблему лекго решает критическая секция/мьютекс в юзерспейсе и спинлок в кернеле |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
||||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
azesmcar, под кернелом я подразумеваю код, усполняющийся ядром, ну драйвера там
так в чем проблема? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
||||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
то что в кернелспейсе частое использование мьютексов в непотходящих местах, взамен спинлоков, грозит серьезным снижением перфоменса всей системы поэтому часто блокировку мьютексами заменяют на спинлоки в частности сами мьютексы и критические секции содержат функционал спинлоков |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
Автор топика просил что-нибудь из WinAPI. Однако даже на современных юниксах printf потокобезопасен. Согласен, но я очень осторожен в безапелляционных высказываниях))) Главное, что там не написано про потокоопасность printf. Про виды стандартной библиотеки смотрите там же: C Run-Time Libraries. И чтобы быть уж на все 100% уверенным, лучше пользовать много-поточную версию LIBC. В ней абсолютно все вызовы стандартной библиотеки потокобезопасны. Однако даже в однопоточной версии LIBC printf потокобезопасна. Если хотите, продемонстрирую отрывками из исходных кодов LIBC (правда, прилагающихся к VC++ 6.0, но можно поискать и посвежее). Там внутри вызова как раз происходит обращения EnterCriticalSection/LeaveCriticalSection к одной из критических секций LIBC версии от Microsoft. Так что и перемешивания логов не будет Это сообщение отредактировал(а) feodorv - 13.11.2011, 10:02 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]()
|
| Правила форума "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. |