1.概念
任务队列TaskQueueTaskQueueBase,是WebRTC中非常核心的一部分,其主要功能是将任务投递到某一个线程执行,该类用于异步执行任务,保证任务的FIFO(先进先出)执行顺序。该类是一个抽象基类无法被实例化。
DelayPrecision:这是一个枚举类型,用于指定任务的延迟精度。有两种选项:kLow和kHigh。kLow精度可能会有额外的17ms延迟,而kHigh精度则没有额外的延迟,但都受到操作系统的定时器精度的限制。Delete():调用此函数开始销毁任务队列,此函数在返回时需要确保没有任务正在运行,也没有新的任务能够在任务队列中启动。同时此函数负责释放对象,释放动作可以在Delete期间同步进行,也可以在Delete之后异步进行。在任务队列上执行的任务不可以调用Delete,但是可以调用其他的函数,比如PostTask。销毁某个任务队列对不在此任务队列中的任务不产生任何影响,这些任务也不会因为其他的任务队列销毁而调用任何函数。PostTask():这个函数用于安排一个任务以FIFO的顺序执行。当一个任务队列被删除时,所有的待执行任务都不会被执行,但会被删除。任务的删除可能在TaskQueue上同步进行,也可能在删除TaskQueue后异步进行。可以在任何线程或任务队列上调用,包括此任务队列。PostDelayedTask()和PostDelayedHighPrecisionTask():这两个函数用于安排一个任务在指定的延迟时间后执行。PostDelayedTask()使用的是"低"精度,PostDelayedHighPrecisionTask()使用的是"高"精度。这两个函数都可以在任何线程或任务队列上调用。PostDelayedTaskWithPrecision():这个函数根据指定的精度,调用PostDelayedTask()或PostDelayedHighPrecisionTask()。Current():这个静态函数用于获取当前正在运行的任务队列。如果当前线程没有关联任何任务队列,则返回nullptr。CurrentTaskQueueSetter:这是一个嵌套类,用于设置当前正在运行的任务队列。TaskQueueDeleter:这是一个结构体,用于删除任务队列。它的operator()函数会调用任务队列的Delete()函数来删除任务队列。
472

被折叠的 条评论
为什么被折叠?



