多线程编程的一点讨论
2006-08-18 10:26
190 查看
本来列下如下题目甚至更多,没有时间去整理。
简单说说吧:
一、线程带来的好处是低计算任务环境中的快速响应(如:GUI)和多CPU的充分利用,妄想通过多线程让许多计算量大的任务在单CPU上提速,那是笑话。
二、同步:只要明白了为什么要同步,那多线程就没什么难的了。换个角度,把共享数据作成线程安全的后,也就没有了线程难控的一些问题。搜索Monitor模式解决线程间共享数据一致性问题。
三、理解何时引发这种数据访问不一致,当然是共享的了(如:全局数据)。说点低级的:不是只要共享对象就要加锁,还要看对象是否有状态,无状态对象只是操作的集合而已。尽量使用堆栈,这会简化线程问题,因为线程切换时自动保存函数活堆栈。
四、大致听过几个锁:自旋锁——它适合短时间操作加锁,又称闪锁,利用硬件机制的加锁,它所带来的好处是开销低,还有内存屏蔽(百度一下,我也懒得查了)。而Mutex等内核对象锁,涉及系统资源的分配以及执行时开销都很大。
五、看看ACE的线程库:并发和同步策略。
好了,好累~~~~~~~~~~~~
一、 线程模型
用户级线程模型(N:1)
系统级线程模型(1:)
混合线程模型(M:N)
二、何时使用多线程
三、线程同步
简单说说吧:
一、线程带来的好处是低计算任务环境中的快速响应(如:GUI)和多CPU的充分利用,妄想通过多线程让许多计算量大的任务在单CPU上提速,那是笑话。
二、同步:只要明白了为什么要同步,那多线程就没什么难的了。换个角度,把共享数据作成线程安全的后,也就没有了线程难控的一些问题。搜索Monitor模式解决线程间共享数据一致性问题。
三、理解何时引发这种数据访问不一致,当然是共享的了(如:全局数据)。说点低级的:不是只要共享对象就要加锁,还要看对象是否有状态,无状态对象只是操作的集合而已。尽量使用堆栈,这会简化线程问题,因为线程切换时自动保存函数活堆栈。
四、大致听过几个锁:自旋锁——它适合短时间操作加锁,又称闪锁,利用硬件机制的加锁,它所带来的好处是开销低,还有内存屏蔽(百度一下,我也懒得查了)。而Mutex等内核对象锁,涉及系统资源的分配以及执行时开销都很大。
五、看看ACE的线程库:并发和同步策略。
好了,好累~~~~~~~~~~~~
一、 线程模型
用户级线程模型(N:1)
系统级线程模型(1:)
混合线程模型(M:N)
二、何时使用多线程
三、线程同步
相关文章推荐
- 继续讨论win32下的多线程编程问题
- 关于多线程编程的一点思考
- 云端服务器单核服务器是否该使用多线程编程的讨论
- [技术讨论]看了73篇极限编程论文后的感觉和一点总结
- 多线程编程的一点小心得(2)
- 【每天一点linux】多线程编程之生产者消费者模型
- 多线程编程的一点小心得(1) 推荐
- 什么时候该使用多线程,以及更恰当的多线程编程方法之讨论
- 关于C#多线程、网络编程与计时器Timer的一点使用心得
- [Unity]多线程编程的一点心得
- 多线程编程总结【转】
- Linux多线程编程实例解析
- Linux C多线程编程入门(基本API及多线程的同步与互斥)
- Java的多线程编程模型5--从AtomicInteger开始
- VC 多线程编程 一
- 多线程编程4 - GCD
- 多线程编程——基础篇 (三)
- Java多线程编程-单例模式几种写法的错与对
- Java多线程编程总结笔记——一多线程基础知识
- 多线程编程之线程死锁问题