ARMプロセッサを搭載したRaspberryPiでPercona(MySQLバリアント)をコンパイルしています。
コンパイル中に報告された問題が発生しましたが、ARMはサポートされていないプラットフォームであるため、誰も修正する気がありません。
https://bugs.launchpad.net/percona-server/+bug/1002848
この問題を回避して正常にコンパイルできましたが、c ++に関する知識がやや不足しており、実際に何かが壊れているかどうかが完全にはわかりません。
SOに関するconstchar*からchar*の質問への無効な変換をたくさん読んだので、この回避策のアイデアを思いつきました。
エラーは次のとおりです。
error: invalid conversion from 'const pthread_mutex_t*' to 'pthread_mutex_t*'
(実際にはpthread_mutex_t
私のプラットフォームにはありませんでしたが、問題は同じです-スクロールバックバッファーである無限の深淵に失われた実際のタイプ)
問題のあるコードは次のとおりです。
uint32 count(uint index) const
{
my_atomic_rwlock_rdlock(&time_collector_lock);
これを次のように変更しました:
uint32 count(uint index) const
{
my_atomic_rwlock_t dummy = time_collector_lock;
my_atomic_rwlock_rdlock(&dummy);
time_collector_lockは次のように定義されます。
private:
my_atomic_rwlock_t time_collector_lock;
これはミューテックスであると想定されているため、おそらくこれをスレッドセーフではないと感じています。それともこれで大丈夫ですか?
より良い解決策はありますか?