利用jrtplib库编写的客户端多线程监听端口,如何减少cpu消耗?
我用利用jrtplib写了个客户端监听本地两个端口(音频和视频端口)rtp数据的程序。开两个线程分别监听,由于每个线程里是死循环监听,所以cpu消耗会比较大,大约70~80%。我初步认为应该不是开了两个线程的原因,因为开一个线程和两个线程的cpu消耗差不多,应该是死循环的原因。不知道有什么降低cpu消耗的办法。
每个线程中利用如下代码监听端口的rtp数据:
do { // 接受RTP数据 status = sess.PollData(); // 检索RTP数据源 if (sess.GotoFirstSourceWithData()) { do { RTPPacket* packet; // 获取RTP数据报 while ((packet = sess.GetNextPacket()) != NULL) { printf("Got packet !\\n"); // 删除RTP数据报 delete packet; } } while (sess.GotoNextSourceWithData()); } } while(1); return 0;}