Когда я прочиталIs freebsd C crypt() threadsafe?
ОШИБКИ
The crypt() function returns a pointer to static data, and subsequent calls to crypt() will modify the same data. Likewise, crypt_set_format() modifies static data.
от: http://www.freebsd.org/cgi/man.cgi?query=crypt&sektion=3
Я был напуган о мне пришлось заблокировать каждый раз, когда я звоню crypt()
, но на этот источник (http://pubs.opengroup.org/onlinepubs/009695399/functions/crypt.html)
Я читаю:
Функция crypt() не обязательно должна быть реентерабельной. Функция, которая не требуется быть реентерабельной, не требуется для потоковой защиты.
Что звучит не правдоподобно для меня.
Я имею в виду, как я могу создать воспроизводимый хеш, если другой поток просто помещает значения в поток, которые не принадлежат друг другу?
Правда ли, что эта функция не должна корректно работать в потоковом режиме?
нет, это не потолочный. Так как он использует внутреннюю статическую структуру данных SAME, два потока, называющих crypt() одновременно, начнут обрабатывать данные друг друга. –