はい、some_clock::now()異なるスレッドからの呼び出しはスレッドセーフである必要があります。
で言及した特定の問題に関しては、QueryPerformanceCounterWindowsAPIが一部のプラットフォームでハードウェアの問題を公開しているだけです。他のOSは、このハードウェアの問題をユーザーコードに公開する場合と公開しない場合があります。
C ++標準に関する限り、クロックが「定常クロック」であると主張する場合、逆方向に移動してはなりません。したがって、同じスレッドに2つの読み取りがある場合、2番目の読み取りが最初の値よりも前の値を返すことはありません。 OSがスレッドを別のプロセッサに切り替えた場合でも。
非定常クロック(std::chrono::system_clock多くのシステムなど)の場合、外部エージェントがクロックを任意に変更する可能性があるため、これについての保証はありません。
私のC++11スレッドライブラリ(std::chronoものを含む)の実装では、安定したクロックが実際に安定していることを確認するために実装が注意を払っています。これにより、同期を確保するために生の呼び出しに加えてコストがかかりQueryPerformanceCounterますが、スレッドをCPU 0に固定することはなくなります(以前はそうしていました)。他の実装にもこの問題の回避策があると思います。
定常クロックの要件は20.11.3[time.clock.req](C ++ 11標準)です。