Если я вызываю СЕЙЧАС из нескольких потоков, могу ли я предположить, что это нормально, или мне нужно реализовать блокировку для этого? Я знаю, что форматирование даты и времени небезопасно, но как насчет чтения даты и времени? Кроме того, как насчет QueryPerformanceCounter? Я просмотрел, но не могу найти исчерпывающую документацию по безопасности потоков для этих низкоуровневых функций.
Могу ли я предположить, что функция Delphi NOW будет потокобезопасной?
29.11.2012
- Теперь потокобезопасно. Форматирование даты также, если вы делаете это правильно. QueryPerformanceCounter также является потокобезопасным. Windows API является потокобезопасным. 29.11.2012
- Документация должна предупреждать вас, когда функция API НЕ является потокобезопасной. В настоящее время функции по умолчанию являются потокобезопасными. 29.11.2012
- Правильное форматирование даты означает использование версий функций, которые принимают параметр
TFormatSettings
. 29.11.2012 - Или вызов функций, которые не получают параметров и никогда не меняют глобальную переменную FormatSettings (если она так называется) 29.11.2012
- Это не является потокобезопасным, поскольку другие функции могут по-прежнему изменять глобальные настройки, пока эта функция их использует. 29.11.2012
- @Golez Именно это я и сказал. Пока вы никогда не изменяете эти общие данные, они потокобезопасны. 29.11.2012
- Спасибо Дэвиду, Марьяну и Сергу за исчерпывающее сообщение. В настоящее время функции по умолчанию являются потокобезопасными. 29.11.2012
Ответы:
1
У вас есть доступ к SysUtils.pas
? У меня есть мои старые исходники Delphi4, а в Source\Rtl\Sys\SysUtils.pas
есть реализация Now()
. Кажется, он использует Win API GetLocalTime()
и собственные функции EncodeDate()
и EncodeTime()
. Все они потокобезопасны, поэтому Now()
также является потокобезопасным.
29.11.2012
Новые материалы
Изучите Vue перед React. Вот почему
Сегодняшняя сеть представляет собой запутанный беспорядок из разных языков, библиотек и фреймворков, и начинающие веб-разработчики часто не могут понять, что изучать в первую очередь.
Что вы..
Гл.31 — Помощь слабослышащим с помощью возможностей машинного обучения Apple Watch.
1 500 000 000 – количество людей с потерей слуха в мире. Это почти 20% населения Земли! (источник: who.int )
Недавно я экспериментировал с Apple Sound Classification API, и результаты на..
Машинное обучение без кода / Глубокое обучение Каждый специалист по обработке и анализу данных должен знать
Akkio, Очевидно.ай, DataRobot, Левити, Clarifai, Teachable Machines, Lobe, Pimer, DynaBench, APAflow
Teachable Machine- https://teachablemachine.withgoogle.com/ Vertex AI..
Код, который работает вместе, остается вместе
Первоначально это было опубликовано в tiagojdf .
Когда я только начинал как младший программист, я всегда терялся, глядя на внутренний код.
Я предположил, что отчасти это было из-за того,..
Эта модель Google сочетает в себе рассуждение и действие в рамках одной языковой модели.
ReAct предоставляет архитектуру, которая инициирует действия на основе путей рассуждений языка.
Недавно я запустил образовательный информационный бюллетень, посвященный ИИ, у которого уже..
Сортировка структур JSON по нескольким полям в JavaScript
Array.sort() не для слабонервных. Особенно, когда речь идет о сортировке сложных структур данных.
Большинство руководств по JavaScript дают только краткое введение в Array.sort() . Обычно..
Иллюзии разработки программного обеспечения
Многие вещи не то, чем кажутся
Реальность — это всего лишь иллюзия, хотя и очень настойчивая. Альберт Эйнштейн
Разработка программного обеспечения никогда не бывает такой, какой кажется...
Now()
использует только свои собственные переменные и побочных эффектов быть не должно. 29.11.2012TDateTime
имеет точность только в миллисекундах, так зачем использовать QPC (который, как известно, НЕ безопасен в многопроцессорной среде, BTW) для получения значений даты/времени с наносекундным разрешением? 29.11.2012TDateTime
может их физически удерживать. 30.11.2012