2015-07-15 5 views
1

У меня есть следить за этим вопрос Why is is_lock_free a member function?C++ атомного объекта блокировки свободных гарантий

подытожить высказанные в этом вопросе: свойство быть безблокировочный может быть известно только для экземпляра типа не какой-либо экземпляр типа.

Я хотел бы знать, является ли экземпляр незаблокированным в какой-либо момент во время выполнения, гарантируется ли свойство (по стандарту C++ 11 или выше) истинным во время остальной части выполнения?

Благодаря

ответ

1

Стандарт не гарантирует его так много слов, но я бы сказал, что это явно подразумевается:

  • если экземпляр не будет оставаться замок бесплатно, затем не было бы состояние гонки между получением результата от is_lock_free и используя результат: это такая вещь, я бы ожидать, прямо упоминается в стандарте, если бы действительный интерес

  • 29,4/2 «функция atomic_is_lock_free( 29.6 ) указывает, свободен ли объект. В любом данном исполнении программы результат запроса без блокировки должен быть согласованным для всех указателей того же типа ». это предлагает, является ли экземпляр незаблокированным или нет, вряд ли изменится во время выполнения программы.

Если вы были определены (параноидальные?), Чтобы гарантировать, что статус блокировки экземпляров не может быть изменен во время прогона программы, вы можете просто вызвать atomic_is_lock_free на указатели на экземпляры ... (или один экземпляр если вы только слегка параноичны)

+0

Я думаю, что паранойя является должной осмотрительностью для критических приложений. Спасибо за ваш ответ! – stackoverflower