+ static void rcu_write_sync() {
+ auto *old_data = rcu_data.load(std::memory_order_consume);
+ auto *new_data = new RcuData(*old_data);
+ new_data->d1++;
+ new_data->d2++;
+ rcu_data.store(new_data, std::memory_order_release);
+ folly::synchronize_rcu();
+ delete old_data;
+ }
+
+ static void rcu_write_retire() {
+ auto *old_data = rcu_data.load(std::memory_order_consume);
+ auto *new_data = new RcuData(*old_data);
+ new_data->d1++;
+ new_data->d2++;
+ rcu_data.store(new_data, std::memory_order_release);
+ folly::rcu_retire(old_data);
+ }
+
+ static void run_rcu_writer_sync_nonstop(size_t pass_count) {