マルチスレッド アプリケーションで localtime を使用しています。
私の理解では、localtime_r と呼ばれるスレッドセーフ バージョンに置き換える必要があります。
しかし、そうすると、リンク障害のためにビルドを完了できません。
どこから解決策を探し始めればよいかさえわかりません。
私のシステムコンポーネントは次のとおりです。
- チップ - STM32 (ARM ベースの皮質)
- IDE - IAR (ST マイクロコントローラ用のコンパイラおよびリンカ)
- OS - ThreadX
この関数は通常、IDE と共に提供される標準ライブラリ内で提供されると思います (よくわかりませんが)。私は正しいですか?
プロジェクトに追加する必要がある別のライブラリはありますか、それともプロジェクト設定に含まれていますか?
この関数を自分のコードに "インポート" する実行可能な方法がない場合、localtime 関数のスレッド セーフ バージョンには他にどのようなオプションがありますか?
アップデート:
私は、OS リソース (つまり、mutex) の使用を避け、代わりに、使用する静的構造なしで (スレッドセーフではない)、「localtime」が行うことを正確に行う標準ルーチンを呼び出すことを検討しています。
そもそも localtime が静的構造を使用する理由がわかりません。そのため、対応する localtime_r は OS リソースで問題を解決するのではなく、単に静的構造の使用を控えているだけだと思います。
そのようなオプションが実行できない場合は、自分で実装することもできますが、デートシステムの「不規則性」のために、すでに適切にテストされているものを使用することを好みます.
ここでの質問は、localtime_r をプロジェクトにリンクする方法です (localtime_r を実装する方法ではありません)。
ありがとう