2

マルチスレッド アプリケーションで localtime を使用しています。

私の理解では、localtime_r と呼ばれるスレッドセーフ バージョンに置き換える必要があります。

しかし、そうすると、リンク障害のためにビルドを完了できません。

どこから解決策を探し始めればよいかさえわかりません。

私のシステムコンポーネントは次のとおりです。

  • チップ - STM32 (ARM ベースの皮質)
  • IDE - IAR (ST マイクロコントローラ用のコンパイラおよびリンカ)
  • OS - ThreadX

この関数は通常、IDE と共に提供される標準ライブラリ内で提供されると思います (よくわかりませんが)。私は正しいですか?

プロジェクトに追加する必要がある別のライブラリはありますか、それともプロジェクト設定に含まれていますか?

この関数を自分のコードに "インポート" する実行可能な方法がない場合、localtime 関数のスレッド セーフ バージョンには他にどのようなオプションがありますか?

アップデート:

私は、OS リソース (つまり、mutex) の使用を避け、代わりに、使用する静的構造なしで (スレッドセーフではない)、「localtime」が行うことを正確に行う標準ルーチンを呼び出すことを検討しています。

そもそも localtime が静的構造を使用する理由がわかりません。そのため、対応する localtime_r は OS リソースで問題を解決するのではなく、単に静的構造の使用を控えているだけだと思います。

そのようなオプションが実行できない場合は、自分で実装することもできますが、デートシステムの「不規則性」のために、すでに適切にテストされているものを使用することを好みます.

ここでの質問は、localtime_r をプロジェクトにリンクする方法です (localtime_r を実装する方法ではありません)。

ありがとう

4

2 に答える 2