Quoting Wan-Teh Chang (2016-11-30 21:33:37) > This improves commit 59c70227405c214b29971e6272f3a3ff6fcce3d0. > > In ff_thread_report_progress(), the fast code path can load > progress[field] with the relaxed memory order, and the slow code path > can store progress[field] with the release memory order. > > In ff_thread_get_buffer(), initialize progress[0] and progress[1] using > atomic_init(). > > Signed-off-by: Wan-Teh Chang <[email protected]> > --- > libavcodec/pthread_frame.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c > index 2736a81..142eaa5 100644 > --- a/libavcodec/pthread_frame.c > +++ b/libavcodec/pthread_frame.c > @@ -458,7 +458,7 @@ void ff_thread_report_progress(ThreadFrame *f, int n, int > field) > atomic_int *progress = f->progress ? (atomic_int*)f->progress->data : > NULL; > > if (!progress || > - atomic_load_explicit(&progress[field], memory_order_acquire) >= n) > + atomic_load_explicit(&progress[field], memory_order_relaxed) >= n) > return; > > p = f->owner->internal->thread_ctx; > @@ -468,7 +468,7 @@ void ff_thread_report_progress(ThreadFrame *f, int n, int > field) > > pthread_mutex_lock(&p->progress_mutex); > > - atomic_store(&progress[field], n); > + atomic_store_explicit(&progress[field], n, memory_order_release); > > pthread_cond_broadcast(&p->progress_cond); > pthread_mutex_unlock(&p->progress_mutex); > @@ -745,8 +745,8 @@ int ff_thread_get_buffer(AVCodecContext *avctx, > ThreadFrame *f, int flags) > } > progress = (atomic_int*)f->progress->data; > > - atomic_store(&progress[0], -1); > - atomic_store(&progress[1], -1); > + atomic_init(&progress[0], -1); > + atomic_init(&progress[1], -1); > } > > pthread_mutex_lock(&p->parent->buffer_mutex); > -- > 2.8.0.rc3.226.g39d4020
Did you see any measurable change in performance after this patch? I used to have lot more explicit memory orders in my original version of the patch, but then I dropped most of them, since I thought they were unlikely to have any significant effect and just added a chance of hard to detect racy bugs. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
