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()