Обход недопустимого преобразования из const

Я компилирую вариант Percona (MySQL )на моем Raspberry Pi, который имеет процессор ARM.

Я столкнулся с проблемой во время компиляции, о которой сообщалось, но никто не хочет ее исправлять, потому что ARM — неподдерживаемая платформа.

https://bugs.launchpad.net/percona-server/+bug/1002848

Мне удалось обойти эту проблему и успешно скомпилировать, но мне немного не хватает знаний о С++, и я не совсем понимаю, действительно ли я что-то сломал или нет.

Я прочитал множество вопросов о недопустимом преобразовании из const char *в char *на SO, и именно здесь у меня появилась идея для этого обходного пути.

Ошибка была следующая:

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);

время _коллектор _блокировка определяется как:

private:
  my_atomic_rwlock_t time_collector_lock;

Из-за того, что это должен быть мьютекс, у меня есть ощущение, что я, вероятно, сделал этот не -поток -безопасным. Или это нормально?

Есть ли лучшее решение?

6
задан Leigh 17 July 2012 в 07:08
поделиться