libvlccore
vlcthread:
vlc线程是libvlccore的重要组成部分,我们在src文件夹下面android、os2、posix、win32等文件夹下包含thread.c文件,说明VLC分别为这些平台实现了线程模块。vlc线程的头文件vlc_threads.h在include文件夹下。文件定义了很多线程相关的函数原型,但VLC对这些内部函数的注释说明很少,只在github上有少许说明,需要我们自己摸索:
线程建立与退出:
VLC_API int vlc_clone(vlc_thread_t *, void * (*) (void *), void *, int) VLC_USED;
VLC_API void vlc_cancel(vlc_thread_t);
VLC_API void vlc_join(vlc_thread_t, void **);
VLC_API void vlc_control_cancel (int cmd, ...);
vlc_clone是线程创建函数;vlc_cancel和vlc_join是线程退出函数,vlc_cancel通知系统在下次线程运行到退出点时(在到达退出点之前通知可能会被取消),完成线程资源的清理工作,对windows系统而言其实现是一个APC(延迟调用过程),vlc_join则要关心线程是否真正结束了,这两个函数可以理解为一个是同步的,一个是异步的。不过说实话,这join名是啥意思真让人费解。
- input_thread_private p
- input_source_t input
- demux_t *p_demux
- stream_t *s