LINUX.ORG.RU

История изменений

Исправление eao197, (текущая версия) :

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

Во-первых, вопрос касательно volatile был не про баг в коде, а про зачем он там вообще. Я даже не поленюсь и дам вам точную цитату:

Зачем нужен volatile в многопоточности?

Так что завязывайте спорить с голосами в своей голове.

Во-вторых, про баги. Этих самых багов было указано целых два:

  1. Отсутствие thread-safety для конструкторов/операторов копирования/перемещения и публичных методов clear/reset. То, что лично вы в этом проблем не видите – это вопрос не к коду, а к вам. Вы, кстати, не ответили а где на ваш код можно посмотреть, чтобы понять уровень говорящего. По факту же имеем класс, который заявлен как thread safe и у которого, сюрпрайз-сюрпрайз, несколько публичных (т.е. доступных всем и каждому) методов не являются thread safe. Если это не баг то что?
  2. Оператор копирования реализован без оглядки на exception safety (upd: нет обеспечения strong exception safety). При этом в ключиках компиляции там -fexceptions явно указан. Вам нужно объяснить что такое exception safety?

Ну и еще одна штука, которая для обобщенного контейнера (которым и должен был бы являться класс ring_buffer) вполне может рассматриваться как баг: нет поддержки типов, которые не являются default constructible. Или вам этот момент тоже нужно объяснить?

Исправление eao197, :

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

Во-первых, вопрос касательно volatile был не про баг в коде, а про зачем он там вообще. Я даже не поленюсь и дам вам точную цитату:

Зачем нужен volatile в многопоточности?

Так что завязывайте спорить с голосами в своей голове.

Во-вторых, про баги. Этих самых багов было указано целых два:

  1. Отсутствие thread-safety для конструкторов/операторов копирования/перемещения и публичных методов clear/reset. То, что лично вы в этом проблем не видите – это вопрос не к коду, а к вам. Вы, кстати, не ответили а где на ваш код можно посмотреть, чтобы понять уровень говорящего. По факту же имеем класс, который заявлен как thread safe и у которого, сюрпрайз-сюрпрайз, несколько публичных (т.е. доступных всем и каждому) методов не являются thread safe. Если это не баг то что?
  2. Оператор копирования реализован без оглядки на exception safety. При этом в ключиках компиляции там -fexceptions явно указан. Вам нужно объяснить что такое exception safety?

Ну и еще одна штука, которая для обобщенного контейнера (которым и должен был бы являться класс ring_buffer) вполне может рассматриваться как баг: нет поддержки типов, которые не являются default constructible. Или вам этот момент тоже нужно объяснить?

Исходная версия eao197, :

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

Во-первых, вопрос касательно volatile был не про баг в коде, а про зачем он там вообще. Я даже не поленюсь и дам вам точную цитату:

Зачем нужен volatile в многопоточности?

Так что завязывайте спорить с голосами в своей голове.

Во-вторых, про баги. Этих самых багов было указано целых два:

  1. Отсутствие thread-safety для конструкторов/операторов копирования/перемещения и публичных методов clear/reset. То, что лично вы в этом проблем не видите – это вопрос не к коду, а к вам. Вы, кстати, не ответили а где на ваш код можно посмотреть, чтобы понять уровень говорящего. По факту же имеем класс, который заявлен как thread safe и которого, сюрпрайз-сюрпрайз, несколько публичных (т.е. доступных всем и каждому) методов не являются thread safe. Если это не баг то что?
  2. Оператор копирования реализован без оглядки на exception safety. При этом в ключиках компиляции там -fexceptions явно указан. Вам нужно объяснить что такое exception safety?

Ну и еще одна штука, которая для обобщенного контейнера (которым и должен был бы являться класс ring_buffer) вполне может рассматриваться как баг: нет поддержки типов, которые не являются default constructible. Или вам этот момент тоже нужно объяснить?