WebRTC中的线程类简介

167 阅读1分钟

Thread中的数据以及源码路径

  • MessageList messages_ : thread中是包含队列的, 有需要线程处理的任务需要先入队, 线程会依次处理, 保证每一个mesaage可以得到有序的响应.

  • PriorityQueue delayed_messages_ : 延迟处理的消息队列.

  • RecursiveCriticalSection crit_ : 临界区, 作用是防止访问队列时发生冲突, 无论是message还是delay_message 都要根据临界区对队列进行访问, 先获取临界区,在插入或取出message.

  • SocketServer* const ss_ : 用于事件处理.

  • pthread_t thread_ : linux下的线程(WEBRTC_POSIX).

  • HANDLE thread_  : windows下的线程 (WEBRTC_WIN).

Thread类中的重要方法

线程基础方法:

  • start()

  • run()

  • stop()

从队列中取数据:

  • Get()
  • Peek()

线程切换:

  • Post()

  • PostTask()

  • Send()

  • Invoke()

关于Thread的几个要点

  • WebRTC中的Thread是一个持有线程句柄的对象, 并不是线程.

  • WebRTC中的线程是有队列的.

  • WebRTC中的线程是以事件驱动的.

线程的创建,不同平台有不同的API:

  • linux/Mac : POSIX, pthread_create()

  • Windows : CreateThread()