1.21 ARM C ライブラリでのスレッドセーフティ

ARM C ライブラリ関数は、常にスレッドセーフ、決してスレッドセーフにはならない、または状況によってはスレッドセーフのいずれかです。

ARM C ライブラリでは、次のようになります。
  • setlocale() など、決してスレッドセーフにはならない関数もあります。
  • memcpy() など、本質的にスレッドセーフな関数もあります。
  • malloc() など、_mutex_* 関数を実装することによってスレッドセーフにできる関数もあります。
  • 上記以外では、tmpnam() など、適切な引数を渡した場合のみ、スレッドセーフとなる関数もあります。
ARM C ライブラリを表面に出さない形式でアプリケーションから利用する場合、例えば、ソースコードで明示的に呼び出していない関数がコンパイラにより暗黙的に呼び出された場合などは、スレッド問題が発生する可能性があります。スレッドセーフな C ライブラリ関数およびスレッドセーフではない C ライブラリ関数を熟知することにより、このタイプのスレッド問題を回避できます。ただし、このような問題は通常はあまり発生しません。
関連する概念
1.19 再実装したミューテックス関数を確実に呼び出す方法
1.22 ARM C++ ライブラリでのスレッドセーフティ
関連する参考文書
1.20 マルチスレッド環境での ARM C ライブラリの使用
1.18 マルチスレッドアプリケーションにおけるロックの管理
4.59 スレッドセーフな C ライブラリ関数
4.60 スレッドセーフではない C ライブラリ関数
非機密扱いPDF file icon PDF 版ARM DUI0475KJ
Copyright © 2010-2014 ARM.All rights reserved.