多线程并发中根据ID进入对应线程调试多路视频软件
来源:http://blog.csdn.net/lezhiyong
视频软件中常见多路视频发送/接收的应用场景,如多用户视频会议、多路视频监控、多人视频群聊等。
一般一路视频涉及到发送端视频采集、显示、编码、网络发送,接收端涉及接收端网络数据接收、解码、显示等数据链路,链路里面也常使用到线程来推/拉数据,那么对于多路视频会有多个线程并发运行,这类视频软件开发中经常遇到需要在代码中定位某函数被哪个线程调用,如一下场景:

调试时候可以使用下面工具类来确定某时刻的数据处理函数processFun和网络发送公共函数被那个线程调用:
头文件:第1路视频线程Thread1创建函数(){ CViThreadID::SetThreadID(1); _ASSERT(CViThreadID::IsThreadID(1)); …}第2路视频线程Thread2创建函数(){ CViThreadID::SetThreadID(2); _ASSERT(CViThreadID::IsThreadID(2)); …}…..视频链路类::数据处理函数processFun(){ if(CViThreadID::IsThreadID(1)) { //第1路视频线程的数据调试处理 …. } ….} 视频数据网络发送公共调用函数(){ if(CViThreadID::IsThreadID(1)) { //第1路视频线程的数据调试处理 …. } if(CViThreadID::IsThreadID(2)) { //第2路视频线程的数据调试处理 …. }}