Replies: 3 comments 1 reply
-
В винде так-то даже asctime и rand являются thread safe, так как все глобальные значения хранятся в thread local storage |
Beta Was this translation helpful? Give feedback.
-
На сайте man7 тоже написано, что они thread safe https://man7.org/linux/man-pages/man3/wcstombs.3.html https://man7.org/linux/man-pages/man3/mbstowcs.3.html @zvezdochiot Если у тебя будет время свободное, можешь пожалуйста посмотреть, что там творится в glibc? |
Beta Was this translation helpful? Give feedback.
-
@plzombie say:
Звиняюсь, но подсобить не смогу ничем. Для меня вся это многопоточность - откровенная тарабарщина. Я из-за неё на |
Beta Was this translation helpful? Give feedback.
-
Смотрю я значит в очередной раз справку по mbstowcs/wcstombs
Сайт https://en.cppreference.com/w/cpp/string/multibyte/mbstowcs говорит
Но при этом
Смотрю, как реализовано в windows 10. Конкретно для mbstowcs используется оптимизация и всё сводится тупо к вызову MultibyteToWidechar из winapi (хотя для mbsrtowcs, действительно, вызывается mbrtowc в цикле) или
. mbtowc вообще не использует mbstate,
Для wcstombs аналогично используется WidecharToMultibyte. Для wctomb аналогично никаких глобальных состояний не меняется.
Насчёт линукса. Вот здесь вот https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_01 функции отсутствуют
В манах для соляриса https://www.opennet.ru/man.shtml?topic=mbstowcs&category=3&russian=4 написано MT-Level | MT-Safe, тоже всё ок
Но вот здесь https://www.opennet.ru/man.shtml?topic=wcstombs&category=3&russian=5 написано, что
Хотя в свежей версии спеки этого уже нет https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstombs.html#
Собственно, вопрос. Так их можно использовать в многопоточных приложениях или нет?
Beta Was this translation helpful? Give feedback.
All reactions