首页 新闻 会员 周边 捐助

线程遇到IO操作是不是必须阻塞

0
悬赏园豆:5 [已解决问题] 解决于 2016-08-30 17:09

如题

 

    IO操作      IO完成     CPU调度 
运行-------------->阻塞--------------->就绪------------>运行

如果是的话, 那么C#的单线程的异步是怎么实现的

C#
weizhangxiaohan的主页 weizhangxiaohan | 初学一级 | 园豆:95
提问于:2016-08-30 16:08
< >
分享
最佳答案
1

 硬盘是独立的啊。异步IO就是CPU交给硬盘读取数据。然后干别的去。硬盘读完告诉cpu。单线程完全可以搞定的。

收获园豆:5
长蘑菇星人 | 小虾三级 |园豆:1832 | 2016-08-30 17:00

嗯 ,我刚查资料才知道IO操作主要分成4种

阻塞IO,非阻塞IO,多路复用IO,异步IO

所以IO操作不是必定会导致线程阻塞。

哎 ,操作系统没好好学哦

weizhangxiaohan | 园豆:95 (初学一级) | 2016-08-30 17:05

@weizhangxiaohan: IO也可能不是从硬盘读文件,也可以是网络中。

长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-08-30 17:16

@长蘑菇星人: 哦 ,谢谢

weizhangxiaohan | 园豆:95 (初学一级) | 2016-08-30 17:17
其他回答(3)
0

什么意思?单线程跟异步有必然联系么?

顾晓北 | 园豆:10893 (专家六级) | 2016-08-30 16:15

异步应该可以用多线程实现 ,也可以用单线程实现,我是说如果是单线程的话,遇到IO操作线程就阻塞了的话,那么cpu就不会执行这个线程了,那还是要等到IO完成解除阻塞,那这不就是同步了么。

支持(0) 反对(0) weizhangxiaohan | 园豆:95 (初学一级) | 2016-08-30 16:20
0

异步是通过多线程实现的。

空明流光 | 园豆:111 (初学一级) | 2016-08-30 16:18

异步应该可以用多线程实现 ,也可以用单线程实现,我是说如果是单线程的话,遇到IO操作线程就阻塞了的话,那么cpu就不会执行这个线程了,那还是要等到IO完成解除阻塞,那这不就是同步了么。

支持(0) 反对(0) weizhangxiaohan | 园豆:95 (初学一级) | 2016-08-30 16:21
0

哥就喜欢这种刚发的帖子,如果火了就是个前排,可以混个脸熟,说不定谁好心就给粉了…稳赚不赔;如果沉了就感觉是我弄沉的,很有成就感,还能捞经验

三胖他爹 | 园豆:116 (初学一级) | 2016-08-30 16:19

-。-

支持(0) 反对(0) weizhangxiaohan | 园豆:95 (初学一级) | 2016-08-30 16:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册