[FFmpeg-devel] [PATCH v3] avutil/thread: add wrappers for pthread_cond_t and pthread_t functions
James Almer
jamrial at gmail.com
Sat Aug 19 16:06:11 EEST 2023
On 8/19/2023 8:55 AM, Andreas Rheinhardt wrote:
> James Almer:
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>> libavutil/thread.h | 30 ++++++++++++++++++++++++++++++
>> 1 file changed, 30 insertions(+)
>>
>> diff --git a/libavutil/thread.h b/libavutil/thread.h
>> index 2f5e7e1cb5..f67b0cdc44 100644
>> --- a/libavutil/thread.h
>> +++ b/libavutil/thread.h
>> @@ -163,11 +163,25 @@ static inline int strict_pthread_once(pthread_once_t *once_control, void (*init_
>> #define ff_mutex_unlock pthread_mutex_unlock
>> #define ff_mutex_destroy pthread_mutex_destroy
>>
>> +#define AVCond pthread_cond_t
>> +
>> +#define ff_cond_init pthread_cond_init
>> +#define ff_cond_destroy pthread_cond_destroy
>> +#define ff_cond_signal pthread_cond_signal
>> +#define ff_cond_broadcast pthread_cond_broadcast
>> +#define ff_cond_wait pthread_cond_wait
>> +#define ff_cond_timedwait pthread_cond_timedwait
>> +
>> #define AVOnce pthread_once_t
>> #define AV_ONCE_INIT PTHREAD_ONCE_INIT
>>
>> #define ff_thread_once(control, routine) pthread_once(control, routine)
>>
>> +#define AVThread pthread_t
>> +
>> +#define ff_thread_create pthread_create
>> +#define ff_thread_join pthread_join
>> +
>> #else
>>
>> #define AVMutex char
>> @@ -178,6 +192,16 @@ static inline int ff_mutex_lock(AVMutex *mutex){ return 0; }
>> static inline int ff_mutex_unlock(AVMutex *mutex){ return 0; }
>> static inline int ff_mutex_destroy(AVMutex *mutex){ return 0; }
>>
>> +#define AVCond char
>> +
>> +static inline int ff_cond_init(AVCond *cond, const void *attr){ return 0; }
>> +static inline int ff_cond_destroy(AVCond *cond){ return 0; }
>> +static inline int ff_cond_signal(AVCond *cond){ return 0; }
>> +static inline int ff_cond_broadcast(AVCond *cond){ return 0; }
>> +static inline int ff_cond_wait(AVCond *cond, AVMutex *mutex){ return 0; }
>> +static inline int ff_cond_timedwait(AVCond *cond, AVMutex *mutex,
>> + const void *abstime){ return 0; }
>> +
>> #define AVOnce char
>> #define AV_ONCE_INIT 0
>>
>> @@ -190,6 +214,12 @@ static inline int ff_thread_once(char *control, void (*routine)(void))
>> return 0;
>> }
>>
>> +#define AVThread char
>> +
>> +static inline int ff_thread_create(AVThread *thread, const void *unused_attr,
>> + void *(*start_routine)(void*), void *arg){ return 0; }
>> +static inline int ff_thread_join(AVThread thread, void **value_ptr){ return 0; }
>> +
>> #endif
>>
>> static inline int ff_thread_setname(const char *name)
>
> The commit message should explain what the gain of this is; after all,
> we managed to make it without these wrappers until now.
Removed the pthread_create/join wrappers as those should probably not be
handled like the mutex/cond/once functions, added a comment about this
being useful for the upcoming threaded executor API, and pushed.
More information about the ffmpeg-devel
mailing list