Почему в POSIX указано, что wctomb не является потокобезопасным, но не mbtowc?

В XSH 2.9.1 , wctomb указана как одна из функций, которая не обязана быть потокобезопасной. Однако противоположная функция преобразования, mbtowc , не отображается в списке. В реализации с кодировками, использующими состояния сдвига, ни один из них не имеет поточно-ориентированного API, и нет смысла, что один должен быть потокобезопасным, а другой нет, в то время как ни один из них не может быть поточно-ориентированным без запрета кодирования с отслеживанием состояния.

То же самое для wcstombs (который есть в списке) и mbstowcs (которого нет). Поскольку обе эти функции работают с целыми строками, которые начинаются и заканчиваются в начальном состоянии сдвига, они не имеют состояния, их API-интерфейсы являются потокобезопасными, и снова нет смысла указывать одно направление как поточно-ориентированное, но не другое.

Кто-нибудь может пролить свет на это?

17
задан R.. 24 January 2011 в 17:55
поделиться