多线程编程摘录(二): 线程管理(3)
2016-07-26 13:30
232 查看
线程的主体入口点 :
Objective - C
框架链接的应用程序,通常在它们的每一个线程必须创建至少一个自动释放池。
如果应用程序使用管理模型,即应用程序处理的
retain 和
release对象,那么自动释放池捕获任何从该线程
autorelease
的对象。
在你编写线程主体入口的时候第一件事情就是创建一个自动释放池。同样,在你的线程最后应该销毁该自动释放池。该池保证自动释放。虽然对象被调用,但是它们不被
release 直到线程退出。
如果应用程序使用的垃圾回收机制,而不是管理的内存模型,那么创建一个自动释放池不是绝对必要的。在垃圾回收的应用程序里面,一个自动释放池是无害的,而且大部分情况是被忽略。允许通过个代码管理必须同时支持垃圾回收和内存管理模型。在这种情况下,内存管理模型必须支持自动释放池,当应用程序运行垃圾回收的时候,自动释放池只是被忽略而已
因为高级的自动释放池不会释放它的对象直到线程退出。长时运行的线程需求新建额外的自动释放池来更频繁的释放它的对象。比如,一个使用
run loop
的线程可能在每次运行完一次循环的时候创建并释放该自动释放池。更频繁的释放对象可以防止你的应用程序内存占用太大造成性能问题。
异常处理 :
最好的办法是在异常发生的地方捕获并处理它,但是如果在你的线程里面捕获一个抛出的异常失败的话有可能造成你的应用程序强退。在你线程的主体入口点安装一个
try/catch
模块,可以让你捕获任何未知的异常,并
Objective - C
框架链接的应用程序,通常在它们的每一个线程必须创建至少一个自动释放池。
如果应用程序使用管理模型,即应用程序处理的
retain 和
release对象,那么自动释放池捕获任何从该线程
autorelease
的对象。
在你编写线程主体入口的时候第一件事情就是创建一个自动释放池。同样,在你的线程最后应该销毁该自动释放池。该池保证自动释放。虽然对象被调用,但是它们不被
release 直到线程退出。
如果应用程序使用的垃圾回收机制,而不是管理的内存模型,那么创建一个自动释放池不是绝对必要的。在垃圾回收的应用程序里面,一个自动释放池是无害的,而且大部分情况是被忽略。允许通过个代码管理必须同时支持垃圾回收和内存管理模型。在这种情况下,内存管理模型必须支持自动释放池,当应用程序运行垃圾回收的时候,自动释放池只是被忽略而已
因为高级的自动释放池不会释放它的对象直到线程退出。长时运行的线程需求新建额外的自动释放池来更频繁的释放它的对象。比如,一个使用
run loop
的线程可能在每次运行完一次循环的时候创建并释放该自动释放池。更频繁的释放对象可以防止你的应用程序内存占用太大造成性能问题。
异常处理 :
最好的办法是在异常发生的地方捕获并处理它,但是如果在你的线程里面捕获一个抛出的异常失败的话有可能造成你的应用程序强退。在你线程的主体入口点安装一个
try/catch
模块,可以让你捕获任何未知的异常,并
相关文章推荐
- Java基础-深拷贝和浅拷贝的区别
- 只使用代码创建WPF应用程序
- Spring AOP 的几个知识点
- c++ 子程序声明
- C语言单链表实现11个功能完全详解
- Java实现顺序队列
- 基于matlab的图像hough变换
- 浅谈CSRF攻击方式
- C++线程 消息队列
- python collections模块
- Java实现链式栈
- 06Spring_使用注解配置bean对象
- C++关于模板
- Struts2系列:(34)OGNL和Struts2 常用的tag
- Javaweb学习总结(一)--数据库连接池
- vs c++配置opencv(1)
- c语言socket编程(基础)
- ubuntu14.04命令行直接安装jdk适合新手
- eclipse下新建hadoop项目
- IO流删除带内容的目录