+
+int sthread_barrier_init(sthread_barrier_t* barrier, const sthread_barrierattr_t* attr, unsigned count){
+ auto b = sg4::Barrier::create(count);
+ intrusive_ptr_add_ref(b.get());
+
+ barrier->barrier = b.get();
+ return 0;
+}
+int sthread_barrier_wait(sthread_barrier_t* barrier){
+ XBT_DEBUG("%s(%p)", __func__, barrier);
+ static_cast<sg4::Barrier*>(barrier->barrier)->wait();
+ return 0;
+}
+int sthread_barrier_destroy(sthread_barrier_t* barrier){
+ XBT_DEBUG("%s(%p)", __func__, barrier);
+ intrusive_ptr_release(static_cast<sg4::Barrier*>(barrier->barrier));
+ return 0;
+}
+