A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄治文 黑马帝   /  2011-9-27 00:33  /  2001 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

同步唤醒机制跟单线程执行程序有什么区别吗?操作同一份数据,而且线程之间通信,线程A休眠后,要等待线程B将其唤醒,而且在单元时间内只有一个线程在操作数据,这跟单线程有什么区别吗?而且在线程之间不断切换,是不是让CPU做更多的功,会不会导致效率降低啊

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

2 个回复

倒序浏览
黑马网友  发表于 2011-9-27 00:52:04
沙发
打个比方,如果你在银行有一个账户,你可以用银行卡在取款机里取,也可以在网上银行消费,如果你在取款的同时,你女朋友正在用网银买衣服,那这时候如果你女朋友还在付款,钱还没扣掉的同时,你也在取款,这时候你就相当于在钱没被网银扣掉的情况下取得款,这样两次操作,相当于只被扣掉一次钱(也就是较晚完成操作的那一方的余款被当做最后的余款),这样银行不就不干了么。要是只能单线程的话,那相当于你只能通过取款机取钱,或者只能通过网银消费,这不是很郁闷么?

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-27 06:49:43
藤椅
不错,线程的切换,的确会占CPU资源的确会使CPU速率降低,因为进程是一个资源的拥有者,在创建、撤销、和钱换中,都会付出“较大的开销”(见操作系统课本(^_~))除非是多处理器,因为CPU有时钟频率,可以回忆一下微机原理实验的时候一下一下按按钮模仿的CLK时钟脉冲去执行机器命令。
         但是这跟你说的又有一毛钱的关系吗
         操作系统是多任务的,其内核通过进程控制块来感知线程的存在并加以控制,微观上是分时处理“串行”处理,但是我们还是需要“并行”!
         我们听歌的时候,打开QQ视频聊天会中断么,不会。当你关闭一个java编写的窗口,会在程序执行完才允许点击关闭吗,不会而是仍然可以有一个点击事件触发响应来中断程序。这就是并发的世界。
        因为我们需要并发,因为有时候甚至要多个进程合作完成同一个任务。有时候不同的进程要访问相同的资源(一个进程的不同线程,或者是不同进程的不同线程),进程之间需要通信,因此需要并发控制,同步唤醒机制什么更是不用说了

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马