読者です 読者をやめる 読者になる 読者になる

Linuxでマルチスレッド

アットマークテクノ製Armadillo上で開発を行っている。CPUはArmである。
マルチスレッドアプリケーションを書いているが、スレッド間で共有しているdoubleのモジュール変数の値がおかしくなる。
ミューテックスを使ってロックしているのだが。
スレッド内ではprintf()等も使えないらしい。リエントラントでない関数は使えないとのことだが、ライブラリ関数がリエントラント可能かどうかの判断する情報が見つけられない。
GNU libのオンラインマニュアルを見ても見あたらない。
どこにあるんでしょ。

よく調べたらスレッドうんぬんの問題ではなかった。
GPSからシリアルを通してバイナリ形式でデータを受信している。
そのデータがIEEE754形式のdoubleなのである。
gccも同じ形式のdoubleなのだと思っていたのだが、どうも違うらしい。
色々調べたがgccがどんな浮動小数点フォーマットを使っているのかは分からなかった。
仕方がないので、IEEE754形式から力業でdoubleに変換する関数を書いて解決。