kenny_zh
码龄10年
关注
提问 私信
  • 博客:28,887
    28,887
    总访问量
  • 18
    原创
  • 497,269
    排名
  • 33
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2014-08-14
博客简介:

kenny_zh的专栏

查看详细资料
个人成就
  • 获得4次点赞
  • 内容获得4次评论
  • 获得3次收藏
创作历程
  • 1篇
    2017年
  • 17篇
    2014年
TA的专栏
  • webrtc
    17篇
  • TensorFlow
兴趣领域 设置
  • 移动开发
    android studio
  • 软件工程
    性能优化
  • 学习和成长
    面试
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

交叉引用造成内存丢失?动手试试吧

最近看了一些网上的文章各种详解、解剖Java GC,告诫我们要怎么避免内存丢失。我觉得很奇怪,.Net虚拟机已经多少年了,这种东西难道不应该虚拟机直接帮我们解决的吗?一时兴起,动手试了一下。果然结果如我所预料,我不知道过去的JVM是什么样,现在的应该是和.Net虚拟机一样先进了。废话少说,直接上代码:交叉引用:public class Main { public static
原创
发布博客 2017.08.02 ·
850 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(7 - 2)

7.2 范例代码1 这里先让我们看一段网上摘录的代码: #include #include #include "talk/base/thread.h" class HelpData : publictalk_base::MessageData{public: std::string info_;}; class Police : publictalk_base:
原创
发布博客 2014.08.16 ·
1274 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(6 - 3)

6.4 talk_base::AutoThread 该类是一个工具类,它的主要功能是临时封装一个线程。用户的应用程序自行调用了系统API创建了一个线程,而这条线程需要临时使用一下talk_base::Thread的功能,比如调用另一个线程talk_base::Thread::Send并阻塞等待另一条线程完成函数调用。是的,在talk_base::Thread中talk_base::Thre
原创
发布博客 2014.08.16 ·
1430 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(6 - 2)

6.3 talk_base::Thread talk_base::Thread的主要功能是封装线程,为线程提供消息队列和多路信号分离器的功能。需要注意的是,talk_base::Thread的绝大多数功能是talk_base::MessageQueue和talk_base::PhysicalSocketServer的代码提供的,仅有talk_base::Thread::Send函数的功能主
原创
发布博客 2014.08.16 ·
1787 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

WebRTC源代码探索之旅——多线程篇(8)

8 我们所学到Linux API 通过详尽地阅读WebRTC的线程模型代码,我们学到了以下这些Linux API是如何被实际应用的:pthread_mutex_init、pthread_mutex_destroy、pthrea_mutex_lock、pthread_mutex_trylock、pthread_mutex_unlock这5个函数可以完成对mutex的操作,基本上和Wi
原创
发布博客 2014.08.15 ·
1144 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(7 - 3)

7.3 范例代码2 范例代码1是一个单线程的例子,所以并不能够足以研究WebRTC在多线程环境下的工作情况。因此,在这个例子的基础上,我把它改良成了多线程的版本:#include #include #include "talk/base/thread.h" class HelpData : publictalk_base::MessageData{public:
原创
发布博客 2014.08.15 ·
1213 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(7 - 1)

7 实际使用WebRTC的线程模型 在这一章节我将实际演示如何将WebRTC的/trunk/talk/base目录下的所有文件编译成静态库。并且在这基础上编译运行2个小程序,以观察整个线程模型的调用关系。这将能够很好地帮助读者理解各个模块是如何协同工作的。 7.1 编译静态库 正如在本文开头时提到的,这一节的内容可能是大家最感兴趣的,但也是我不得不和大家说声抱歉的,我是在M
原创
发布博客 2014.08.15 ·
1258 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(6 - 1)

6 thread thread.h/thread.cc文件实现了WebRTC对系统线程的封装。它主要包括3个类talk_base::ThreadManager类、talk_base::Thread类和talk_base::Runnalbe类;以及几个工具类talk_base::AutoThread类、talk_base::ComThread类和talk_base::SocketServer
原创
发布博客 2014.08.15 ·
1359 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(5 - 4)

5.9 talk_base::PhysicalSocketServer 如果说talk_base::MessageQueue是多路信号分离器的外围,那么talk_base::PhysicalSocketServer就是多路信号分离器的真正核心。talk_base::PhysicalSocketServer主要实现了消息和IO的多路分发功能,类似于Windows平台上的WSAWaitForM
原创
发布博客 2014.08.15 ·
2498 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(5 - 3)

5.4 talk_base::PosixSignalHandler talk_base::PosixSignalHandler和talk_base::PosixSignalDispatcher这两个类只有Linux版本。并且在整个WebRTC的源代码中没有任何地方使用过这两个类。因此,对它们的代码分析主要是为了帮助Windows开发人员从实用的角度学习如何使用Linux平台下的部件。 
原创
发布博客 2014.08.15 ·
1358 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(5 - 2)

5.3 talk_base::EventDispatcher talk_base::EventDispatcher类实现了跨平台的等价于Win32自动重置(autoreset)WSAEvent的功能。在Windows平台上有网络多线程开发经验的读者应该很熟悉WSAEvent,我就不再多做介绍了。 我在1.1节讲解过talk_base::Event类。那talk_base::Phys
原创
发布博客 2014.08.15 ·
1314 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

WebRTC源代码探索之旅——多线程篇(5 - 1)

5 physicalsocketserver physicalsocketserver.h/physicalsocketserver.cc文件实现了一个基本的多路信号分离器。这个多路信号分离器的实现代码可以横跨Windows、Linux、OSX、Android、ios等平台,非常复杂。其实在/trunk/talk/base目录下,还有多个SocketServer的实现,从这些SocketS
原创
发布博客 2014.08.15 ·
1787 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(4 - 2)

4.4 talk_base::MessageQueue 现在我们正式进入多线程篇最为激动人心的部分——多路信号分离器的消息队列组件。WebRTC的多路型号分离器由2部分组成:消息队列和talk_base::SocketServer(主要实现就是talk_base::PhysicalSocketServer)。消息队列负责接受消息,并使用消息处理器(talk_base::MessageHan
原创
发布博客 2014.08.15 ·
1769 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(4 - 1)

4 messagequeue messagequeue.h/messagequeue.cc文件是多路信号分离器的重要组成部分。它实现了消息一个完整地消息队列,该队列包括立即执行消息队列、延迟执行消息队列和具有优先级的消息队列。其中,talk_base::MessageQueue类也是talk_base::Thread类的基类。所以,所有的WebRTC的线程都是支持消息队列的。 4.
原创
发布博客 2014.08.15 ·
1543 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

WebRTC源代码探索之旅——多线程篇(3)

3 messagehandler messagehandler.h/messagehandler.cc文件仅仅定义了talk_base::MessageHandler类,和一个模板工具类talk_base::FunctorMessageHandler类。 3.1 talk_base::MessageHandler talk_base::MessageHandler类的主要功
原创
发布博客 2014.08.15 ·
1537 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(2)

2 crticalsection criticalsection.h/criticalsection.cc文件中包含了3个类talk_base::CriticalSection、talk_base::CritScope和talk_base::TryCritScope。这3个类对于有多线程编程经验的Windows开发人员来说都是非常容易理解的。基本上就是对Win32 CriticalSect
原创
发布博客 2014.08.15 ·
1432 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

WebRTC源代码探索之旅——多线程篇(1)

随着CPU频率接近物理极限,多芯片、多核几乎成为了加速软件运行速度的唯一选择。与之相应地,多线程、异步编程以及并发编程成为了软件开发人员的必修课。因此,各种各样的开发框架不断涌现。在C++领域,boost的thread库等优秀的多线程框架也是其中的代表。特别是针对socket网络编程的boost.asio库可以轻松帮助开发人员实现多线程大量并发的网络服软件。 与这些框架相比,WebRTC的
原创
发布博客 2014.08.15 ·
3526 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

WebRTC源代码探索之旅(前言)

前言 最近要找工作,发现某美国硅片巨头正在招聘WebRTC相关开发工程师,非常感兴趣。所以决定深入研究一下WebRTC的源代码。 其实,前一阵子就下载过WebRTC的源代码,发现非常适合我的“口味”。这是我第一次看到在Linux系统上实现类似Win32风格的多线程编程。过去看到的有关Linux的书籍、教程一般都是介绍一些Posix标准的多线程例程和同步工具,例如signal、pth
原创
发布博客 2014.08.15 ·
1807 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏
加载更多