symbian线程和进程学习笔记
1) 多线程相比于活动对象,具有更高的运行期要求,例如,线程间上下文切换比同一个线程活动对象的切换慢一个数量级;线程需要更大的空间开销,通常线程要有4K内核空间和8K用户空间的程序栈;相比之下,活动对象只需要占用C++对象的空间(通常小于1K)。
2) 使用线程和使用活动对象实现多任务的最大区别是前者是由内核抢占执行,后者的协同多任务发生在一个线程中,并且一旦开始处理一个事件,活动对象就无法被其所在的活动调度器所抢占(所以RunL要迅速返回,否则会阻塞主线程,即事件处理尽量简短)。
但仍有很多场合必须使用多线程,如下
多媒体处理
移植程序
一个任务无法分割成简短片段的任务。
为了保证所执行任务的连续性,比如播放声音
这样就可以将其在新建的线程中实现,从而可以异步运行该线程,而不会影响到应用程序对用户接口事件的响应。
PS: symbian下访问界面(画图绘屏等)必须在主线程
3) 为了保护线程免受潜在恶意代码的困扰,从Symbian 8.0后就不允许一个线程操纵其他线程(这也是在主线程中执行receiveThread.kill(0)导致程序退出的原因)。
4) 可在.mmp文件中作为分离进程运行组件的主线程指定其堆尺寸的最小值和最大值
Epocheapsize minSize maxSize
5) 编写多线程代码时,不应该任意的赋予线程一个高优先级,否则它可能抢占系统中的其他线程。
6) 所有线程默认优先级为EPriorityNormal,当线程被创建,其被置为挂起状态不会开始运行,直到调用Resume()
7) 线程之间无法直接传递数据指针,因为进程地址空间被加以保护而相互隔离了。
8) 每个线程都有自己的heap和stack;主程序有默认的清除栈(cleanStack),新建的线程就得手动创捷清除栈。
9) 多线程可通过同步对象来访问资源。通过限制或直接锁住资源,保证在同一时刻只能有一个线程对资源写操作,比如临界区(Critical Sections)
symbian线程和进程学习笔记相关推荐
- linux pipe 命名管道,linux 进程学习笔记-named pipe (FIFO)命名管道
与"无名管道"不同的是,FIFO拥有一个名称来标志它,所谓的名称实际上就是一个路径,比如"/tmp/my_fifo",其对应到磁盘上的一个管道文件,如果我们用f ...
- 4.19 python 网络编程和操作系统部分(TCP/UDP/操作系统概念/进程/线程/协程) 学习笔记
文章目录 1 网络编程概念 1)基本概念 2)应用-最简单的网络通信 2 TCP协议和UDP协议进阶(网络编程) 1)TCP协议和UDP协议基于socket模块实现 2)粘包现象 3)文件上传和下载代 ...
- 线程(Thread)的学习笔记
本文是对b站狂神说java多线程的学习总结,附上b站链接https://www.bilibili.com/video/BV1V4411p7EF?spm_id_from=333.999.0.0& ...
- symbian线程和进程
(2009-11-23 12:23) Symbian OS 中,针对有限的硬件资源,使用AO来实现多任务,与AO相比,多线程具有更高的运行期要求:线程上下文切换比同一线程中AO切换慢一个数量级:线程需 ...
- RT-Thread 线程管理(学习笔记)
本文参考自[野火EmbedFire]<RT-Thread内核实现与应用开发实战--基于STM32>,仅作为个人学习笔记.更详细的内容和步骤请查看原文(可到野火资料下载中心下载) 文章目录 ...
- Python进程学习笔记-进程创建fork
1. 进程 VS 程序 编写完毕的代码,在没有运行的时候,称之为程序 正在运行着的代码,就成为进程 进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的. 2. fork( ) Pyth ...
- 线程池---多线程学习笔记(三)
线程池产生原因: 创建很多线程造成的两个问题: 1.构建一个新的线程会涉及到与操作系统的交互,会消耗一定的系统资源,当使用完这些新创建的线程后,线程就会被销毁,然后当我们再创建的时候就会再次消耗系统资 ...
- Python进程学习笔记-multiprocessing模块
如果你打算编写多进程的服务程序,Unix/Linux无疑是正确的选择.由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序? 由于Python是跨平台的,自然也 ...
- C++ 线程同步 (学习笔记)
1. 利用Mutex 互斥对象 #include <iostream.h> #include <windows.h> DWORD WINAPI Fun1Proc( LPVOID ...
最新文章
- 【Swift】UITableViewCell 中 TTTAttributedLabel 超链接无法点击的问题
- 我来了 开源社区的兄弟门
- Android --- Serializable 接口与 Parcelable 接口的使用方法和区别,怎么选择?
- 数组的扩展-搜集自无忧脚本
- MapHack源代码
- ElementUI使用问题记录:设置路由+iconfont图标+自定义表单验证
- liunx创建php环境变量,linux添加环境变量的方法总结
- ubuntu18.04虚拟机突然连不上网
- Java基础学习总结(178)——时候替换你的logback/log4j1了,使用性能更强大配置更简单的log4j2
- 投资大佬都在看的一张报表
- oracle支持ipv6,准备现有的网络以支持 IPv6
- uses-sdk标签详解
- 读书笔记:windows程序设计
- 记LabVIEW宝典
- 完整版第四方Oreo易支付源码+28K易支付源码
- PostgreSQL 收缩膨胀表或索引 - pg_squeeze or pg_repack
- Vue倒计时动画效果
- (背包dp) 背包N讲
- 将标签转为onehot编码
- C#语言基础学习笔记