Что означает страница MSDN, так это то, что информация, возвращаемая функцией, изменяется во времени: это то, что означает «изменчивость». Например, информация, возвращаемая GetSystemTime
, также является «изменчивой».
Другие различные концепции процедур «являются повторителями» и «являются потокобезопасными». Повторное участие означает, что информация, используемая процедурой, зависит от локальных переменных, а не от глобальных, которые могут быть интерпретированы как форма потокобезопасной процедуры. Однако «поточно-безопасный» означает, что процедура реализует механизмы взаимного исключения потоков при доступе к ресурсам, требуемым процедурой.
Теперь, хотя MSDN ничего не говорит о том, что функция является потокобезопасной, при условии, что она обращается к системным ресурсам, мы можем предположить, что эта функция фактически является потокобезопасной. Кроме того, функция принимает указатель на локальную структуру (в которой функция записывает информацию), поэтому она является реентерабельной. Если GlobalMemoryStatusEx
вернул указатель на глобальную структуру, мы могли бы заподозрить, что функция не является потокобезопасной. В таком случае люди из MS, вероятно, заметят это. Например, см. Заключительную заметку в разделе «Примечания» по этой ссылке: http://msdn.microsoft.com/en-us/library/2c8d19sb(v=vs.90).aspx
Что именно вы подразумеваете под «потокобезопасным» в этом контексте? Похоже, что это вызов функции ядра и блокирует поток вызывающего, пока результат не будет получен и возвращен. –
Никакое состояние программы не будет повреждено при вызове этой функции из нескольких потоков. Он просто пытается предупредить вас, что информация, которую вы получаете, мгновенно устарела. Это запах кода. –
Могу ли я безопасно называть его из нескольких параллельных потоков и полагаться на результаты, чтобы быть достаточно точными? Изменить: с учетом того, что результаты будут мгновенно устаревать. – KSletmoe